모델-뷰-컨트롤러 - 위키백과, 우리 모두의 백과사전

[아키텍처 패턴] MVC 패턴이란?

https://github.com/protocorn93/iOS-Architecture

model-view-controller 는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다.

전통적인 MVC 아키텍쳐

스크린샷 2022-10-13 오후 2.11.57.png

위의 다이어그램을 통해 우리는 Model, View, Controller 이 세 요소가 서로 강하게 연결되어 있음을 알 수 있다. View는 사용자의 액션을 Controller에게 전달하고 Controller는 이에 따른 데이터의 갱신을 Model에게 요청한다. 이렇게 Model에서 데이터의 갱신이 일어나고 Model은 이런 상태 변화를 View에게 전달한다. 그렇게 되면 View 역시 갱시된 데이터에 맞춰 업데이트 된다.

이렇게 강하게 연결된 셋은 독립성이 낮기 때문이 이들 각각의 재사용성은 굉장히 떨어진다. 그렇기 때문에 현재 iOS 개발에는 전통적인 MVC 아키텍쳐는 맞지 않다고 볼 수 있다.

Apple’s MVC

스크린샷 2022-10-13 오후 2.15.45.png

Apple이 제시한 Cocoa MVC에서 Controller는 View와 Model의 중재자로 View와 Model의 직접적인 연결을 막는다. 이는 전통적인 MVC보다 높은 독립성의 보장을 기대한다. 하지만 이러한 기대가 실제 개발에 큰 효과를 가져올까? 먼저 Cocoa MVC 패턴의 다이어그램을 살펴보자.

위의 다이어그램을 얼핏 보면 View와 Model의 독립성이 보장되는 것으로 보인다. 실제 개발은 어떨까?

Cocoa MVC 아키텍쳐에서 Controller의 역할은 UIViewController가 담당하게 된다. 그리고 UIViewController는 View를 소유하게 되고 View들의 Life Cycle과 강하게 연결되게 된다. 그렇기 때문에 View와 Controller의 분리가 쉽지 않으며 Controller의 재사용성이 어려워지고 이로 인해 연관되어 있는 View의 재사용 역시 어려워진다.