[Design Pattern] MVP, MVC, and MVVM
Updated:
- 계층을 분리하여 코드의 재활용성을 높이고, 중복 제거
- 화면에 보여주는 로직과 실제 데이터 처리 로직 분리
- Model : Application에서 사용되는 Data 및 Data를 처리하는 부분
- View : 사용자에게 제공되는 UI (Ex. CSS/HTML/XML/XAML)
- Model - View 의존성 제어에 따라 패턴 분류
MVC (Model - View - Controller)
- 입력은 controller에서 처리
- controller는 입력에 해당하는 model 업데이트 후 model을 나타낼 view 선택
- 하나의 controller가 여러 view 선택하여 model 나타낼 수 있음 (n:n = controller:view)
- controller는 view를 지정만 해주고, view가 model을 이용해 업데이트
- model을 직접 사용 / model에서 view에게 notify / view에서 polling을 통해 model 변화 인지
- view - model 간의 의존성
- ex) 대부분의 웹 개발
MVP (Model - View - Presenter)
- 입력은 view에서 처리
- presenter는 view, model의 인스턴스 소유 (1:1 = presenter:view)
- presenter는 view와 model 사이의 이벤트 처리 및 데이터 업데이트를 담당
- model과 view의 완벽한 분리(의존성 X)
- view - presenter 간의 의존성
- ex) 안드로이드 개발
MVVM (Model - View - ViewModel)
- 입력은 view에서 처리
- view model은 view를 표현하기 위해 만든 view를 위한 model (1:n = view model:view)
- view로 들어온 action은 command 패턴으로 view model에 action 전달
- view model은 model에게 데이터 요청 후 model에게 응답 받고 데이터 가공하여 저장
- view는 view model과 data binding하여 화면에 표시
- view - model 의존성 X
- view - view model 의존성 X (command pattern, data binding)
- ex) WPF
ref :
[WPF] MVC, MVP, MVVM 차이점
[디자인패턴] MVC, MVP, MVVM 비교
MVC vs. MVP vs. MVVM
Leave a comment