Mvp 패턴 1 개념

[개념]

MVP 패턴은 Model-View-Presnet로 이루어진다.

Model : 데이터 관리

View : 화면 표현

Presenter : Model 과 View를 연결시키는 다리 역할

기본적으로 모든 데이터 관리는 Model, 모든 화면 표현은 View가 둘 사이를 이어주는 것은 Presenter가 수행함.

[간단 예시]

상황 : 검색 버튼을 누르면 화면에 이미지가 뜸

사용자

  1. 검색 버튼을 클릭함
  2. 화면에 이미지가 뜸

  1. M, V, P 초기화 : 앱이 생성되면서 Model, View, Presenter가 생성되고 등록됨.
  2. P -> V : Presenter에서 View에게 버튼을 그리라고 명령
  3. V : 버튼을 그리고 대기
  4. 사용자가 버튼을 누름.
  5. V -> P : View가 Presenter에게 버튼이 눌림을 알림.
  6. P -> M : 검색해서 이미지를 가져오라고 명령.
  7. M 동작 : 검색해서 이미지를 찾음.
  8. M -> P : 검색한 이미지를 전달함.
  9. p -> V : View에게 이미지를 전달하고 화면에 띄우라고 명령
  10. V 동작 : 이미지를 화면에 띄움

각자의 일을 절대 침범하지 않음.

[MVC vs MVP]

MVC는 Model - View - Controller로 이루어진 디자인 패턴입니다.

Controller와 Presenter의 역할을 비슷하지만 다릅니다.

MVC패턴은 사용자가 이벤트를 발생했을 때 Controller가 먼저 반응을 합니다.

그 후 Model에게 데이터를 요청하고 맞는 View에게 반환합니다.

MVP패턴은 사용자가 이벤트를 발생했을 때 View가 먼저 반응을 합니다.

그 후 해당 이벤트를 담당하는 Presenter를 호출하고 Model의 작업을 받은 후 View에게 반환합니다.

하지만 Android에서는 사용자 이벤트 반응이 View가 첫번째일수 밖에 없어 View가 곧 Controller역할도 수행해야 합니다.

이 때문에, 각각의 책임을 분리시키지 못하고, 모듈화시키기가 어렵습니다.

[MVP를 써야하는 이유]

  1. 코드를 모듈화 시킬 수 있다.
  2. 협업시에 기능별로 분리되어 있어 작업하기 수월하다.
  3. 유닛테스트 하기 용이하다.

참고자료

MVP blog