Menu
Menu
Posts List
  1. CleanArchitecture2
    1. 1. 전체 구조
    2. 2. 계층별 설명
      1. Entity
      2. Domain
      3. Data
      4. Presentation
    3. 3. 의존성 방향
    4. 4. 요약 표

CleanArchitecture + ReactorKit

CleanArchitecture2


1. 전체 구조

클린 아키텍처는 계층 간 의존성을 분리하여, 비즈니스 로직이 외부 UI나 데이터 저장 방식에 영향을 받지 않도록 한다.

1
2
3
4
5
6
7
<외부>
Presentation

Domain

Data
<내부>

2. 계층별 설명

Entity

  • 비즈니스 규칙을 표현하는 핵심 모델이다.
  • 단순한 데이터 구조가 아니라, 도메인의 상태와 로직을 담는다.

Domain

  • 순수한 비즈니스 로직 계층이다.
  • 외부와는 무관하게 동작한다.
  • UseCase와 Repository Interface로 구성된다.

Data

  • 데이터 저장소 접근을 담당하는 계층이다.
  • 외부 API, DB, UserDefaults와 연결된다.
  • Repository 인터페이스의 실제 구현체가 위치한다.

Presentation

  • 사용자와의 상호작용을 처리하는 계층이다.
  • 상태 관리와 액션 처리를 담당한다.
  • ViewController 또는 View, 그리고 Reactor로 구성된다.

3. 의존성 방향

1
2
Presentation → Domain (← Interface)
Data → Domain Interface
  • Domain은 외부를 몰라야 한다.
  • Data는 Domain의 Interface를 구현한다.
  • Presentation은 UseCase를 사용하여 Domain 로직을 호출한다.

4. 요약 표

계층 구성 요소 책임 비고
Entity Model 도메인 모델 정의 상태와 규칙 포함
Domain UseCase, Repository Interface 비즈니스 로직 외부 독립적
Data Repository 구현, API, DB 저장소 처리 Domain Interface 구현
Presentation ViewController, View, Reactor UI와 사용자 입력 처리 Domain 호출

ReactorKit, RxSwift 구조에서 적용해보니, Reactor도 가벼워지고, 책임이 명확해지고 테스트도 편해져서 장점이 훨씬 많은 것 같다!
RIBs 쓸거아니면 꼭 유의해서 써야겠다 :)