[Android] clean architecture - 개념
[Android] Clean Architecture 실전 압축 정리 - 개념
처음 학습하면서 작성한 글입니다. 필요시 추후 내용을 수정할 예정입니다. 틀린 부분이 있으면 언제든 지적해주면 감사하겠습니다 :) 클린 아키텍처를 공부하다 보면 모든 블로그에서 다음과
heegs.tistory.com
https://leveloper.tistory.com/205
[Android] Clean Architecture in Android
Clean Architecture란? 고객들에게 제공하는 애플리케이션 같은 경우에는 수많은 기능들이 있기에 복잡도가 굉장히 높습니다. 복잡도가 높은 애플리케이션을 개발할 때 어떻게 하면 유지 보수하기
leveloper.tistory.com
https://youngest-programming.tistory.com/484
[안드로이드] 클린 아키텍처(Clean Architecture) 정리 및 구현
[2021-04-28 업데이트] [2022-02-01 업데이트] Hilt 사용한 프로젝트 링크 하단에 추가 [프로젝트] github.com/mtjin/mtjin-android-clean-architecture-movieapp mtjin/mtjin-android-clean-architecture-movieap..
youngest-programming.tistory.com
Clean Architecuture 란 무엇인가?
각 분리된 계층이 한가지 역할만 할 수 있도록 계층을 나누어 구현하는 방식
1) Entities
비즈니스 규칙을 캡슐화, 메서드를 갖는 객체일 수도 있지만 데이터 구조와 함수의 집합일 수도 있음
외부가 변경되더라도 엔티티는 변경x (의존성이 가장 낮기 때문)
2) Use cases
애플리케이션의 고유 규칙을 캡슐화하며 엔티티로부터의 데이터 흐름 조합
유스케이스 계층의 변경이 엔티티에 영향을 줘서는 안되며,
데이터베이스, 공통 프레임워크 및 UI에 대한 변경으로부터 격리된다.
(유스케이스의 의존성: 엔티티 < 유스케이스 < 데이터베이스 이기 때문에)
3) Interface Adapters (Presenters)
엔티티 및 유스케이스의 편리한 형식에서 데이터베이스 및 웹에 적용할 수 있는 형식으로 변환
MVP 패턴의 Presenter, MVVM 패턴의 ViewModel 포함 (순수 비즈니스 로직만을 담당하는 역할)
4) Frameworks & Drivers (Web, DB)
상세한 정보
웹 프레임워크, 데이터베이스, UI, HTTP client
1 -> 4로 갈수록 의존성은 낮아진다.
Clean Architecutre에 사용되는 3가지 계층은?
의존성: Presentation -> Domain -> Data
1) Domain 계층
의존성을 가지고 있지 않은 계층,
(Presentation, Data 레이어와 어떤 의존성도 맺지 않고 독립적이다)
포함)
- 비즈니스 로직에 필요한 Data Model과 UseCase
(* UseCase: 한 개의 행동을 담당하고 이름만 보고 이게 무슨 기능을 가졌을지 짐작하고 구분할 수 있어야 함)
- (Repository Pattern을 사용한다면, DataModel에 대한 Repository가 포함)
2) Data 계층
Domain 계층에 의존성을 가지고 있는 계층
Data를 control하는 계층
포함)
- API 통신과 그 결과로 가져오는 Data Entity, 내부 DB (Room)과 DAO
- 위의 데이터 (서부, 내부)를 사용하기 위한 Repository와 그 구현부
- Data 계층 데이터(받아오는)와 Domain 계층 데이터(실제로 사용하는)로 변환해주는 Mapper 클래스
3) Presentation 계층
화면과 입력에 대한 처리 등 UI와 직접적으로 관련된 부분을 담당
Presentation 계층은 Domain과 Data 계층을 포함하고 있다
포함)
- UI (Activity, Fragment)
- VM (각 화면에 사용될 ViewModel)
- DI (의존성)
- Module
# Todo - 패턴(MVC, MVP, MVVM)
# Todo - 의존성(Dagger, Hilt, Koin)
# Todo - Multi Module