728x90
iOS 개발에 있어서 다양한 디자인 패턴을 잘 이해하고 활용하는 것이 중요하다.
디자인 패턴은 수많은 개발자들이 시행착오를 겪으면서 제시하는 하나의 패러다임이라고 볼 수 있다.
일반적인 패턴과 iOS는 약간의 차이가 있다.
iOS의 입장에서 생각하는 MVC와 MVP 그리고 MVVM을 정리하겠다.
애플에서의 MVC
특징
- View와 Model 간의 의존성을 낮추기 위해 서로 분리 시킴
장점
- 가장 단순한 형태
- 설계 및 구현이 쉬움
- UIKit 개발에 최적화되어 있음
단점
- ViewController 파일 하나가 View와 Controller의 역할을 모두 수행함
- 따라서 View와 Controller를 분리해서 구현하기 어려움
- 프로젝트 규모가 커질수록 ViewController가 비대해짐
- 그럴수록 유지 보수 및 협업에 불리함 (이런 이유에서 MVVM으로 많이 넘어가려고 하는 것 같다)
MVP
특징
- ViewController에서 생명 주기, 화면 전환, 콜백 처리 등 필요최소한의 역할만 남기고 나머지는 모두 Presenter로 위임
- ViewController는 하나의 수동적인 View 역할
장점
- 비대해진 ViewContoller를 멍청하게 바꿈
단점
- 또 다시 View와 Presenter의 의존성 문제가 발생
MVVM
특징
- MVP에서 1년 만에 개선되어 제시됨
- View와 Presenter의 의존성 문제를 해결
- Presenter가 ViewModel로 대체됨
- View의 업데이트는 View가 하게되며, 업데이트 트리거는 Data Binding을 통해 ViewModel과 연결되어 있음
장점
- View와 Model의 의존성과 View와 ViewModel의 의존성까지 해결
- 서로 의존성 없이 독립되어 있으므로 모듈화하기 좋고 개발 및 테스트에 용이
- Combine이나 RxSwift와 함께 쓰면 Data Binding을 구현하기 편리
단점
- 설계 및 구현이 복잡함
- 프로젝트 규모가 커지면 ViewModel 또한 커지게 됨
728x90
'iOS' 카테고리의 다른 글
[iOS] ARC와 GC의 등장 (1) | 2024.01.09 |
---|---|
[iOS] MRC와 iOS의 메모리 관리 방식 (0) | 2024.01.09 |