[iOS/Swift] MVC 디자인 패턴의 이해
MVC 패턴의 이해
Model
- 앱의 Data + Status + Logic 을 담당
View
- 사용자에게 보여지는 User Interface를 구성
Controller
- Model과 View 사이의 중재자 역할
- 사용자가 View를 통해 Interaction하면 Controller가 이를 Control
Apple의 MVC
- View와 Controller를 ViewController 하나로 취급한다.
Swift 관점의 MVC 흐름
Controller to View/Model
- View에 대해서 outlet을 이용해 View에게 직접 접근할 수 있다.
- Model에 직접 접근할 수 있다.
View to Controller
- target-Action 구조로 사용자의 행위에 따라 필요한 함수를 호출 할 수 있다.
- 또한, delegate, datasource 로 미리 정해진 방식의 요청을 수행할 수 있다.
Model to Controller
- Notification & KVO 방식을 통해 Model의 변화를 Controller에 알릴 수 있다.
MVC 특징
장점
- 간단하고 직관적인 구조를 갖고 있어, 작은 프로젝트에서는 쉽고 빠르게 개발할 수 있다.
- Apple에서 기본적으로 지원하고 있는 패턴이기 때문에 쉽게 개발할 수 있다.
단점
- View와 Controller의 강한 결합도 : Controller가 View의 Life Cycle까지 관리하기 때문에 View와 Controller 분리가 어렵다. 이로 인해 재사용성이 떨어지고 유닛 테스트를 진행하기 어렵다.
- 거대한 View Controller (Massive View Controller) : Life Cycle 관리, delegate, datasource 관리, 네트워크 요청 등 많은 코드가 Controller에 작성되어 Controller의 크기가 비대해지고 내부 구조는 복잡하게 된다. 이는 프로젝트 규모가 커질수록 유지보수가 어렵다.
🙋🏻♀️ 참고