iOS - Swift

[iOS/Swift] MVC 디자인 패턴의 이해

개발자 수니 2024. 5. 16. 16:55
728x90
반응형

MVC 패턴의 이해

Model

- 앱의 Data + Status + Logic 을 담당 

 

View

- 사용자에게 보여지는 User Interface를 구성

 

Controller

- Model과 View 사이의 중재자 역할

- 사용자가 View를 통해 Interaction하면 Controller가 이를 Control

 

Apple의 MVC

- View와 Controller를 ViewController 하나로 취급한다.

Apple's MVC

 

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의 크기가 비대해지고 내부 구조는 복잡하게 된다. 이는 프로젝트 규모가 커질수록 유지보수가 어렵다.

 

 

 

 

 

🙋🏻‍♀️ 참고

[iOS/Swift] MVC (Model-View-Controller)

728x90
반응형