MV~ 모델의 특징
개발 설계 시 이용할 수 있는 여러가지 아키텍처 패턴들이 있습니다.
- MVC(Model-View-Controller)
- MVP(Model-View-Presenter)
- MVVM(Model-View-ViewModel)
- 기타
이 패턴들은 공통적으로 Model과 View를 가집니다.
- Model: 프로그램에서 사용되는 실제 데이터 및 데이터 조작 로직을 처리하는 부분
- View : 사용자에게 제공되어 보여지는 UI 부분
그리고 공통적으로 큰 특징이면서 장점을 가집니다.
- 화면에 보여주는 로직과 실제 데이터가 처리되는 로직을 분리합니다.
MVC

- 구조
- Model
- View
- Controller: 사용자의 입력(action)을 받고 처리하는 부분입니다.
- 동작
- 사용자의 Action들은 Controller에 들어오게 됩니다.
- Controller는 사용자의 Action를 확인하고, Model을 업데이트합니다.
- Controller는 Model을 나타내줄 View를 선택합니다.
- View는 Model을 이용하여 화면을 나타냅니다.
- 특징
- Controller는 여러개의 View를 선택할 수 있는 1:n 구조입니다.
- Controller는 View를 선택할 뿐 직접 업데이트 하지 않습니다.
- 장점
- 보편적으로 많이 사용됩니다.
- 이 글에서 소개하는 패턴중 가장 단순합니다.
- 단점
- Model - View 사이의 의존성이 높아 애플리케이션이 커질 수록 유지보수가 어렵습니다.
MVP

- 구조
- Model
- View
- Presenter: View에서 요청한 정보로 Model을 가공하여 다시 View에게 전달해 합니다.
- 동작
- 사용자의 Action들은 View를 통해 들어오게 됩니다.
- View는 데이터를 Presenter에 요청합니다.
- Presenter는 Model에게 데이터를 요청합니다.
- Model은 Presenter에서 요청받은 데이터를 응답합니다.
- Presenter는 View에게 데이터를 응답합니다.
- View는 Presenter가 응답한 데이터를 이용하여 화면을 나타냅니다.
- 특징
- Presenter는 Model과 View를 연결하는 매개체 역할을 합니다.
- Presenter와 View는 1:1 관계입니다.
- 장점
- Model - View 사이의 의존성이 없습니다.(MVC의 단점 개선)
- 단점
- Presenter - View 사이의 의존성이 강해집니다.
MVVM

- 구조
- Model
- View
- View Model: View를 나타내기 위한 데이터 처리를 하는 Model입니다.
- 동작
- 사용자의 Action들은 View를 통해 들어오게 됩니다.
- View에 Action이 들어오면, View Model에 Action을 전달합니다.
- View Model은 Model에게 데이터를 요청합니다.
- Model은 View Model에게 요청받은 데이터를 응답합니다.
- View Model은 응답 받은 데이터를 가공하여 저장합니다.
- View는 View Model과 Data Binding(View Model과 View의 프로퍼티를 연결)하여 화면을 나타냅니다.
- 특징
- ViewModel과 View는 1:n 관계이며, 데이터 바인딩을 이용해 의존성을 제거합니다.
- 장점
- MVC, MVP의 단점을 개선하여 의존성이 없어져 테스트 및 확장 용이성이 증가합니다.
- 단점
- View 모델의 설계 난이도가 높습니다.
[참고자료]