[CS] MVC design pattern / MVC 디자인 패턴

2022. 10. 21. 14:19🍏/DesignPattern

 

mvc design pattern

 MVC 패턴은 애플에서 기본적으로 지원하는 디자인 패턴
Model + View + Controller 구조의 architecture pattern.

1. Model은 앱의 데이터와 핵심 기능인 비즈니스 로직등을 소유
2. View는 사용자에게 정보를 표시 (하나 이상의 뷰) 데이터를 보여주거나 UI를 담당한다.
3. Controller는 Model과 View의 중간다리 역할로 View로부터 사용자의 입력을 처리하여 Model에게 어떤 작업을 해야 하는지 알려주거나, Model의 데이터 변화를 View에게 전달하여 View를 어떻게 업데이트할지 알려준다.

이는 정보가 사용자에게 제공되는 방식과 사용자로부터 받아 들여지는 방식에서 정보의 내부적인 표현을 분리하기 위해 나뉘어진다. 이는 컴포넌트를 분리하며 코드의 효율적인 재사용을 가능케한다.

장점 
 - 다른 패턴에 비해 코드량이 적다.
 - 애플에서 기본적으로 지원하고 있는 패턴이기 때문에 쉽게 접근할 수 있다.
 - 많은 개발자들에게 친숙한 패턴이기 때문에 개발자들이 쉽게 유지보수 할 수 있다.
 - 개발 속도가 빠르기 때문에 아키텍처가 중요하지 않을 때 사용하거나 규모가 작은 프로젝트에서 사용하기 좋다.

단점
 - View와 Controller가 너무 밀접하게 연결
 - Controller가 View의 Life Cycle까지 관리하기 때문에 View와 Controller를 분리하기가 어려움
 - 재사용성이 떨어져 유닛 테스트가 어려움
 - 대부분의 코드가 Controller에 밀집 가능성 높음
 - Life Cycle 관리 뿐만이 아니라, delegate나 datasource관리, 네트워크 요청, DB에 데이터 요청이 Controller에 작성되어 Controller의 크기가 비대해지고 내부 구조가 복잡해짐.
 이런 상황을 Massive View Controller 라고 부르며 이런 코드는 프로젝트 규모가 커질수록 유지보수가 힘들다.