MVP 디자인 패턴은 MVC 디자인 패턴의 한계점인 View-Model 간의 의존성을 해결하고자 나타났다.
Model과 View의 한계점을 해결해주기 위해 Controller를 Presenter로 대체하고 View와 Model의 각 요소를 보다 명확하게 분리하여 의존성을 해결했다.
차이점은 MVC패턴과 구조와 역할이 동일하지만 의존성을 없애기 위해 Controller를 Presenter로 대체한 것이다
MVP패턴은 MVC패턴에서 파생된 만큼 구조와 역할이 동일하지만 MVC의 View-Model의존성을 해결하기 위해 Controller를 Presenter로 대체한 차이가 있다.
-> 헌데 왜 MVP보다 MVC를 많이 사용할까?
디자인 패턴에 대해 들어보면 MVP에 대해 찾기가 어려웠다.
[User] --(Action)--> [View]
MVC와 다르게 사용자의 Action이 View를 통해 들어온다.
MVC는 사용자의 Inputdl Controller를 통해 들어온다.
[view] --(Request)--> [Presenter]
View는 필요한 데이터를 Presenter에 요청
[Presenter] --(Request)--> [Model]
Presenter는 Model에게 해당 데이터를 요청
[Model] --(Response)--> [Presenter]
Model은 Presenter에서 요청 받은 데이터 응답
[Presenter] --(Response)--> [View]
View는 필요한 데이터를 Presenter에 응답
[View] ---> [User]
View는 Presenter가 응답한 데이터를 이용해 화면에 나타낸다.
MVC 패턴의 View와 Controller의 관계에서 Controller가 View를 선택할 수 있어 1:N의 관계가 되는 것에 반해
MVP 패턴은 View에서 액션이 들어가 Presenter와 View가 1:1 관계가 형성된다.
MVC의 의존성을 해결하기 위해서 MVP가 파생되었지만 MVP도 한계점에 의존성이 있다는 걸 알게되었다. 의존성은 무엇이고 이걸 해결하려면 어떻게 해야할까..?