-
Clean Architecture + MVVMArchitecture + Design Pattern 2022. 10. 3. 23:56
모바일 software engineering 에서 가장 많이 사용하는 architectural patterns 는 MVVM, Clearn Architecture, Redux pattern 이 있다. 이번 글에서는 MVVM 과 Clearn Architecture 가 iOS App 에서 어떻게 적용되는지 살펴볼 것이다.
Clearn Architecture 에서 가장 중요한 규칙은 안쪽 layer 에서 바깥쪽 layer 로 dependencies 가 향하지 않는 것이다. 즉 안쪽에서는 바깥쪽에 대한 정보를 몰라야 한다.
모든 Layers 를 그룹으로 나누어보면 Presentation, Domain and Data layers 이렇게 세개로 구성할 수 있다.
Domain Layer (Business logic)는 가장 안쪽 원이다. Entities(Business Models), use cases, 그리고 Repository Interfaces 를 갖는다. 다시 말하자면, Domain Layer 는 바깥 layer 에 대한 어떠한 것도 아는 상태이면 안된다.
Presentation Layer 는 UI (UIViewController) 를 가지고 있다. View 들은 하나 혹은 다수의 Use Cases 를 다루는 ViewModels (presenter) 에 의해 다루어진다. Presentation Layer 는 Domain Layer 에만 의존한다.
Data Layer 는 Repository 구현과, 하나 이상의 Data Sources 를 포함한다. Repositories 는 Data Sources 로 부터의 data 를 다룬다. Data Source 는 Remote 이거나 Local (CoreData 등) 일 수 있고, Data Layer 또한 Domain Layer 에만 의존한다.
Data Flow
1. View 는 ViewModel 의 함수를 호출한다.
2. ViewModel 은 그에 따른 Use Case 로직를 처리한다.
3. Use Case 는 User 와 Repositories 에서의 Data 를 조합하여 처리한다.
4. 각 Repository 는 외부 또는 내부 데이터를 가져온다.
5. 처리된 정보가 다시 View(UI) 방향으로 이동한다.
(Dependency Rule 과 역방향 흐름은 protocol - delegate 을 통해 일어난다. )
Dependency Direction
Presentation Layer -> Domain Layer <- Data Repositories Layer
Presentation Layer (MVVM) = ViewModels(Presenters) + Views(UI)
Domain Layer = Entities + Use Cases + Repositories Interfaces
Data Repositories Layer = Repositories Implementations + API(Network) + Persistence DB
출처: https://tech.olx.com/clean-architecture-and-mvvm-on-ios-c9d167d9f5b3
'Architecture + Design Pattern' 카테고리의 다른 글
ReactorKit (0) 2022.10.12 MVVM (0) 2022.09.26 Clean Architecture (0) 2022.09.25 Delegate & Protocol (0) 2022.03.28 Architecture Patterns ( MVC, MVP,MVVM ) ( with iOS, Swift) (0) 2021.10.21