Skip to content

Latest commit

 

History

History
27 lines (21 loc) · 2.05 KB

README.md

File metadata and controls

27 lines (21 loc) · 2.05 KB

Clean-Architecture-iOS

Clean Architecture Layer

스크린샷 2024-07-29 오후 1 03 12
  • Presentation Layer (MVVM) = ViewModel (Presenter) + View (UI, ViewController)
  • Domain Layer = Entity + Use case + Repository Protocol (Dependency Injection을 위해 사용)
  • Data Layer = Repository Implements + API, DB (Network Code * Service, DTO)

Clean Architecture Flow

스크린샷 2024-07-29 오후 9 11 39
  1. 사용자가 ViewController에서 버튼을 클릭한다. (VC에서는 addTarget을 통한 인식이 들어오고 -> action 메서드 호출)
  2. ViewController의 action 메서드에서 ViewModel에게 들어온 Event를 전달한다.
  3. ViewModel은 UseCase에게 데이터를 요청한다.
  4. UseCase는 Repository를 통해 "원하는 지역의 날씨 데이터를 가져오는" 비즈니스 로직을 수행한다.
  5. Repository는 Service에게 외부 API에 데이터 요청을 보낸다.
  6. Service는 API를 호출해서 디코딩된 데이터를 DTO 구조체의 형태로 가져온다.
  7. Repository는 Service에서 받아온 DTO(API Response의 맞춰 정의된 데이터 구조)를 Entity(애플리케이션 내부에서 사용할 데이터 구조)로 변환한다.
  8. ViewModel은 가져온 데이터를 Observable 객체에 할당한다. (View가 해당 데이터를 observe 하고 변경 사항을 알아차릴 수 있게 하기 위함)
  9. Observable은 didSet 구문으로 데이터의 변화를 감지하고, 바인딩된 ViewController에게 변경사항을 알린다.
  10. ViewController는 전달받은 변경사항을 반영하여 UI를 업데이트한다.

자세한 내용은 <코딩하는 체대생 - Clean Architecture + MVVM + Observable 사용해서 날씨앱 리팩토링하기> 글에서 확인하실 수 있습니다:)