[디자인패턴] MVC, MVP, MVVM 패턴
MVC Pattern
MVC 패턴이란 Model, View, Controller 로 이루어진 디자인패턴이다. M, V, C 역할을 분리해서 코드를 관리하기 때문에 유지보수가 편해지고 개발 효율성이 높아진다.
MVC 구조
용어
Model
: 애플리케이션에서 사용되는 데이터와 이 데이터를 처리하는 부분이다.
View
: 사용자에게 보여지는 UI 부분이다.
Controller
: 사용자의 입력을 받고 처리하는 부분이다.
동작
- 사용자의 Action이 Controller로 들어온다.
- Controller는 사용자의 Action을 확인하고, Model의 값을 update한다.
- Controller 는 Model을 나타낼 View를 선택한다.
- View는 Model을 활용해서 화면을 랜더링한다.
View
가 update 되는 방법은 여러가지가 있다.- View가 Model을 이용해서 직접 update
- Model에서 View에게 Nofity 하는 방법 (Observer Pattern)
- View가 Polling으로 주기적으로 Model의 변경을 감지하는 방법
특징
Controller
와View
는 1:N 관계이다.- Controller는 View를 직접 update 하지 않고 View 도 Controller를 알지 못한다.
- View와 Model 사이의 의존성이 높다. (단점)
MVP Pattern
MVP 패턴은 Model, View, Presenter 로 이루어진 디자인패턴이다. Model, View는 MVC 패턴과 동일하지만, Controller 대신에 Presenter가 존재한다.
MVP 구조
용어
View
: 사용자에게 보여지는 UI
Model
: 애플리케이션에서 사용되는 데이터와 이 데이터를 처리하는 부분
Presenter
: View에서 요청한 정보를 Model을 가공하여 View에게 전달하는 부분, View와 Model을 연결하는 역할을 한다.
동작
- 사용자의 Action이 View를 통해서 들어온다.
- View는 데이터를 Presenter에게 요청
- Presenter는 Model에게 데이터를 요청
- Model은 Presenter에게 요청받은 데이터를 응답
- Presenter가 View에게 데이터를 넘겨줌
- View는 Presenter가 준 데이터를 사용해서 화면을 랜더링
특징
- Presenter가 Model과 View의 인스턴스를 가지고 있고 이를 연결하는 역할을 한다.
-
Presenter와 View는 1:1 관계
- MVC 패턴의 문제였던 View와 Model 사이의 의존성 문제는 해결되었다. 그렇지만 View와 Presenter 사이의 의존성이 높아졌다. (장단)
MVVM Pattern
MVVM 패턴은 Model, View, View Model 로 이루어진 디자인패턴이다. Model, View는 동일하고 ViewModel이 새로 생겼다.
MVVM 구조
용어
Model
: 애플리케이션에서 사용되는 데이터와 이 데이터를 처리하는 부분
View
: 사용자에게 보이는 UI
View Model
: View를 표현하기 위해 등장한 View를 위한 Model, View를 나타내는 Model이자 여기에 필요한 데이터 처리를 하는 부분
동작
- 사용자의 Action이 View를 통해 들어온다.
-
Command 패턴으로 View Model에 Action을 전달
- View Model에서 Model에게 데이터를 요청
- Model에서 데이터 응답
- View Model에서 응답 데이터를 가공하여 저장
- View는 View Model 데이터를 Binding하여 화면을 랜더링
특징
- Command 패턴과 Binding 패턴이 사용되는 패턴이다.
- View와 View Model 사이의 의존성을 제거했다. (장점)
-
View Model : View는 1:N 관계이다.
- View Model의 설계가 쉽지 않다. (단점)