clean architecture
2023. 2. 4. 09:58ㆍ카테고리 없음
엔티티(Entities)
- 핵심 업무 규칙을 캡슐화
- 메서드를 가지는 객체, 일련의 데이터 구조와 함수의 집합
- 가장 변하지 않으며 외부로부터 영향을 받지 않는 영역
유즈 케이스(Use Cases)
- 애플리케이션의 특화된 업무 규칙을 포함
- 시스템의 모든 유즈 케이스를 캡슐화하고 구현
- 엔티티로 들어오고 나가는 데이터 흐름을 조정하고 조작
인터페이스 어댑터(Interface Adapter)
- 일련의 어댑터들로 구성
- 외부 인터페이스에서 들어오는 데이터를 유즈 케이스와 엔티티에서 처리하기 편한 방식으로 변환하며,
유즈 케이스와 엔티티에서 나가는 데이터를 외부 인터페이스에서 처리하기 편한 방식으로 변환 - 컨트롤러, 프레젠터, 게이트웨이 등이 여기에 속함
프레임워크와 드라이버(Frameworks & Drivers)
- 시스템의 핵심 업무와는 관련 없는 세부 사항
- 프레임워크나, 데이터베이스, 웹 서버 등이 여기에 해당
프리젠테이션 계층(Presentation Layer)
- 뷰(View): 직접적으로 플랫폼 의존적인 구현, 즉 UI 화면 표시와 사용자 입력을 담당
단순하게 프레젠터가 명령하는 일만 수행 - 프레젠터(Presenter): MVVM의 ViewModel과 같이, 사용자 입력이 왔을 때 어떤 반응을 해야 하는지에 대한 판단을 하는 영역
무엇을 그려야 할지도 알고 있는 영역입니다.
도메인 계층(Domain Layer)
- 유즈 케이스(Use Case): 비즈니스 로직이 들어 있는 영역
- 모델(Entity): 앱의 실질적인 데이터입니다.
데이터 계층(Data Layer)
- 리포지터리(Repository): 유즈 케이스가 필요로 하는 데이터의 저장 및 수정 등의 기능을 제공하는 영역으로, 데이터 소스를 인터페이스로 참조하여, 로컬 DB와 네트워크 통신을 자유롭게 할 수 있습니다.
- 데이터 소스(Data Source): 실제 데이터의 입출력이 여기서 실행
리포지터리 ( = 인터페이스 )
- 의존성 역전으로 (+DI), 인터페이스로 구현하고 데이터 계층에서 구현
프레젠터Viewmodel
- Use case 호출
유즈케이스
- API 호출 (= 인터페이스.voke() )
- 작은 도메인의 경우에는 없기도함 ( = VM이 이 역할을 함 )
트랜스레이터 ( = mapper )
데이터계층
- 데이터 계층 엔티티 <-> 도메인계층 모델
- 레포지터리 is ( = APIManager... )