이전 포스팅에도 작성한 적이 있는데,
새로이 공부하면서 다시 정리해보도록 하겠습니다 ✏️
왜냐하면 까먹었기 때문이죠
아마 내용이 비슷할거에요.. 그래도 한번 더 써보는걸로도 공부가 되니깐,,.
2022.05.29 - [📱 Android] - [Android] Clean Architecture in Android
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과 같은 네트워크 관련 프레임워크가 여기에 해당
'📱 Android' 카테고리의 다른 글
[Jetpack] LiveData와 ViewModel (0) | 2023.03.23 |
---|---|
[Hilt] Hilt 익히기 #2 - Dagger 복습하기 (주요 Annotation) (0) | 2023.01.30 |
[Android] SOLID 원칙 (0) | 2023.01.08 |
[Hilt] 코드랩으로 Hilt 익히기 # 1 (0) | 2023.01.07 |
DI (Dependency Injection) 의존성 주입 (0) | 2022.12.05 |