기존에서 사용하고 있던 애플리케이션 구조도
•
User Interface, Presentation, Domain, Data을 단일 App Module을 사용하고 있었음
•
단일 모듈을 사용하게 되면 Dto 타입이나 프로퍼티가 변경될 때 참조하고 있는 모든 클래스들을 수정해줘야하는 비용이 많이 발생하기 때문에 유연한 구조를 가질 수 없음
개선하고자 하는 애플리케이션 구조도
•
유지보수를 높이기 위해 MVVM + Clean Architecture를 사용
User Interface Module
•
Activity, Fragment
•
메인 모듈
Presentation Module
•
ViewModel
•
Presentation Model
•
Model Mapper(toPresentation)
Domain Module
•
Android의 의존성을 가지면 안되는 모듈
•
타 플랫폼 계층에서도 독립적이게 만들어야함
•
Use Case
•
Domain Model
•
Model Mapper(toDamain)
•
Repository Interface
Data Module
•
Android 의존성을 가지는 모듈
•
Remote, Cache(Local) 모델을 관리(Network)
•
Repository Implementation
•
Model Mapper(toData)