MVP 패턴은 MVC 패턴으로부터 파생되었으며 컨트롤러가 프레젠터로 교체된 패턴입니다.
사실 단순한 정의를 내리자면 MVC 패턴의 컨트롤러와 비슷한 역할을 한다.
View에서 요청한 정보로 Model을 가공하여 View에 전달해 주는 부분입니다. View와 Model의 연결고리 역할을 합니다.
MVP 패턴의 장점은 View와 Model의 의존성이 없다는 것입니다. MVP 패턴은 MVC 패턴의 단점이었던 View와 Model의 의존성을 해결하였습니다. (Presenter를 통해서만 데이터를 전달 받기 때문에..)
MVC 패턴의 단점인 View와 Model 사이의 의존성은 해결되었지만, View와 Presenter 사이의 의존성이 강해져 어플리케이션이 복잡해 질 수록 View와 Presenter 사이의 의존성이 강해지는 단점이 있습니다.
MVVM 패턴은 마찬가지로 MVC 패턴으로부터 파생되었는데 컨트롤러가 뷰모델로 교체된 패턴입니다.
View Model이란 View를 표현하기 위해 만든 View를 위한 Model입니다. View를 나타내 주기 위한 Model이자 View를 나타내기 위한 데이터 처리를 하는 부분입니다.
MVVM 패턴은 View와 Model 사이의 의존성이 없습니다. 또한 Command 패턴과 Data Binding을 사용하여 View와 View Model 사이의 의존성 또한 없앤 디자인패턴입니다. 각각의 부분은 독립적이기 때문에 모듈화 하여 개발할 수 있습니다.
MVVM 패턴의 단점은 View Model의 설계가 쉽지 않다는 점입니다.