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... )