- Model View Presenter 의 약자
- 프로그래밍을 할 때 Model, View, Presenter로 구분하여 설계하는 방법이다.
- MVC 모델의 단점을 보안하기 위하 고안된 패턴이다.
각각의 역할은 아래와 같다.
1. Model
- 데이터를 보유 또는 가공하는 역할을 한다.
(사용자가 편집하길 원하는 모든 데이터들을 가지고 있다)
- View와는 서로 모르는 관계를 갖는다.
- Presenter와는 요청을 받고 그 요청에 맞는 정보를 가공하여 전달해줄 뿐의 관계다.
2. View
- UI등 무언가 화면에 보여주기 위한 역할을 한다.
- 화면에 보여주는 역할 외에는 그 무엇도 관여해서는 안된다.
- Presenter에 간접적으로 버튼이 눌렸음 정도만 알린다.
- Model과는 서로 모르는 관계를 갖는다.
3. Presenter
- Model과 View를 이어주는 중간다리 역할을 한다.
- Event에 대한 기능을 수행하고 Model에서 가공된 정보를 View에게 전달한다.
위 역할에 따라 계산기로 간단히 플로우를 살펴보자면
1. Model
- 일반용, 공학용 등의 플래그들을 보유
- 일반용일 경우 일반용에 필요한 정보를 가공하여 리턴
- 공학용일 경우 공학용에 필요한 정보를 가공하여 리턴
2. Presenter
- 숫자, +, -, 보기, 편집 등의 이벤트를 받음
- 보기->일반용 플래그를 누르면 Model로부터 가공된 정보를 받아 View에 던져준다.
- 보기->공학용 플래그를 누르면 Model로부터 가공된 정보를 받아 View에 던져준다.
3. View
- 화면에 보이는 것들을 그린다.
- Presenter가 Model로부터 일반용, 공학용 등 가공된 정보를 가져다가 던져주면 View에서는 그에 맞는 화면을 그려준다.
장점
- 각각 역할에 맞는 작업만 한다.
- Model과 View가 독립성을 갖는다.
단점
- MVC와 달리 이번에는 Presenter와 View의 의존성이 강하다.
참고 출처
MVC 링크
MVVM 링크
'프로그래밍 > 디자인패턴' 카테고리의 다른 글
Adapter (어댑터) (9) | 2020.04.22 |
---|---|
MVVM (Model-View-ViewModel) (0) | 2020.04.09 |
MVC (Model-View-Controller) (0) | 2020.04.09 |
Command (커맨드) (0) | 2020.04.09 |
Strategy (스트레티지) (0) | 2020.04.09 |