[Swift] MVP Design Pattern이란?

seokhoho·2023년 12월 5일
0

swift

목록 보기
4/5

MVP Design Pattern이란?

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 관계가 형성된다.


MVP 패턴 장단점

장점

  • Controller를 Presenter로 대체하여 MVC의 Model과 View의 의존성 해결

한계점

  • Presenter <-> View 의존성 증가
  • 앱이 복잡해질수록 View와 Presenter 사이 의존성이 강해짐
  • View: Presenter = 1:1 관계 형성
    • (각 view마다 Presenter가 필요하다)
  • 프로젝트 확장 -> 코드의 기하급수적 증가

MVC의 의존성을 해결하기 위해서 MVP가 파생되었지만 MVP도 한계점에 의존성이 있다는 걸 알게되었다. 의존성은 무엇이고 이걸 해결하려면 어떻게 해야할까..?



참조
https://velog.io/@zzangzzong/Design-Pattern-MVC-MVP-MVVM

profile
iOS 코린이

0개의 댓글