📱 Android

[Android] Clean Architecture

콩드로이드 2023. 1. 8. 14:59

이전 포스팅에도 작성한 적이 있는데, 

새로이 공부하면서 다시 정리해보도록 하겠습니다 ✏️ 

왜냐하면 까먹었기 때문이죠 

아마 내용이 비슷할거에요.. 그래도 한번 더 써보는걸로도 공부가 되니깐,,.

 

2022.05.29 - [📱 Android] - [Android] Clean Architecture in Android

 

[Android] Clean Architecture in Android

Clean Architecture 본격적인 디자인 패턴 공부에 앞서, clean Architecture에 대해 알아보겠습니다 Clean Architecture에 가장 중요한 부분은 UI와 Data를 분리함에 있습니다 관심사를 계층별로 분리 관심사란 단

kong-droid.com

 


Clean Architecture

⭐️ 관심사 분리 : 안드로이드 설계 시 가장 중요한 원칙 

*관심사란?
어떠한 상태나 데이터에 영향을 미치는 정보의 집합

 

 

각 계층별로 관심사를 분리하는 소프트웨어 디자인 철학입니다 

 

 

클린 아키텍처의 특징 

✔️ 코드 종속성이 외부에서 내부로 의존합니다 

     UI -> Presenters -> Usecase -> Entities

 

✔️ 내부계층은 외부계층의 코드를 알 수 없습니다 

 

✔️ 계층간의 의존성이 단방향이기 때문에 재사용성이 용이하고, 유닛테스트가 쉬워집니다  

 

✔️ 안쪽 계층으로 진입할 수록 캡슐화, 추상화 수준이 높아진다 

 


클린 아키텍처의 각 계층

Entities

• 데이터의 구조나 메서드를 포함 ex)POJO

• 외부에서 변경사항이 있을 때, 가장 최소한의 변경사항만 가져야한다 

   ex) 화면이동 등 변경 시 엔터티는 영향받으면 X

• 안드로이드 애플리케이션 같은 코드를 포함해선 안된다 

 

 

 

Use Cases

• 애플리케이션과 관련된 비즈니스 규칙을 포함하고, Entity로부터 데이터 흐름들을 관리

• Entity에 영향을 미치지 않으며, 외부계층에서도 영향을 받지 않는다 

ex) Model(DB질의, 네트워크 요청 등 비즈니스 로직 수행)

Repository(내부 DB 접근, 서버에 데이터요청)

Executor(Model, Repository가 백그라운드에서 작업 수행할 수 있도록 작업 스레드 관리)

 

 

Presenter(Interface Adapters)

• Use case, Entity로 부터 얻은 데이터를 가공하는 계층

ex) 원하는 결과값을 UI에 표현하려고 데이터 형식 변경

ex) ViewModel, View, Presenter...

• 비즈니스 로직과 프레임워크를 자연스럽게 연결하는 목적 (UI로부터 얻은 데이터를 내부 DB, 서버로 전송할 때도 여기서 데이터 가공해 전달)

 

 

 

UI(Frameworks & drivers)

• UI와 관련된 Activity, Fragment, Intent, Content Provider 등이 해당 

• Retrofit과 같은 네트워크 관련 프레임워크가 여기에 해당