ios

MVP 패턴에 대하여

junsmustLim 2022. 2. 21. 00:53

MVC 패턴에 대한 실증

 

 Apple에서 기본적으로 제공하는 패턴인 MVC 디자인패턴은 입문자 또는 규모가 크지 않은 프로젝트에서 주로 사용되는 디자인패턴이라고 생각합니다.

저 또한 회사에서 혼자 개발을 해야하고 규모가 크지 않은 프로젝트를 수행할 때 사용해왔습니다.

그러나 완성된 Product를 보고 나니 장점보다 단점이 더 부각되어 보였습니다. 

단점들은 Massive ViewController , 빈번한 Side Effect , 현저히 떨어지는 코드의 가독성 , 유지보수의 어려움이 있었습니다. 

이러한 단점들을 보완하고자 새로운 디자인 아키텍처를 찾는 도중 MVP 패턴을 찾았으며 이제부터 이에 대해 이야기를 해보려고 합니다. 

 

MVC 문제점

책임 분배의 부족

컨트롤러에서  작업 사용자 인터랙션 핸들링 , view 구성 , 네트워크 호출 작업 등 이러한 작업들이 모두 이루어집니다 

이로써 잘 알려진 Massive ViewController가 탄생하게 됩니다.

 

낮은 테스트 용이성

Massive ViewController가 탄생되며 단일 책임 원칙이 깨지게 됩니다.

모든 로직들이 View의 lifecycle과 연결되어 있어 각 단위의 테스트를 하기는 쉽지가 않습니다.

 

 

MVP 패턴이란

 

우선  MVP에 대해서 찾아보았다. 

 

View :  View 와 ViewController , UI setup 과 events 들로 구성된다.
Presenter: delegate를 통하여 모든 이벤트에 대한 책임과 UI 업데이트에 관한 책임을 갖는다. 

                     가장 중요한 점은 UIKit에 의존하지 않는점이다.

Model : 비지니스 로직 처리 및 Data access layer를 담당한다. 

 

요약

 1 .  view는 UI 구성 및 모든 이벤트들을 등록한다.

 2.  view에 모든 이벤트가 발생할 경우 presenter에 요청

 3.  presenter는 model에 요청 후 escaping closure를 통하여 결과를 전달 받는다 

 4.  presenrer는 전달받은 결과를 view에게 delegate로 전달한다. 

 5.  view는 전달받은 결과를 u 업데이트 역할을 담당한다.

 

 

간단한 MVP 패턴 예제 코드

 

View

 

Presenter

 

Model

 

프로젝트 구조

 

 

 

 

 

 

 

 

 

프로젝트 결과

 

 

읽어주셔서 감사합니다.