Architecture) MVC 구조에 대해 블록 그림을 그리고, 각 역할과 흐름을 설명하시오.
MVC 패턴이란?
M
odel(모델),V
iew(뷰),C
ontroller(컨트롤러)
Traditional MVC
- 다이어그램을 보면 Model, View 그리고 Controller, 이 세 요소가 서로 강하게 연결되어 있음을 알 수 있다.
Model
에서는 애플리케이션에서 사용할데이터들을 관리
하고,View
는유저 인터페이스를 표현 및 관리
한다.Controller
는 View와 Model의 다리 역할을 해View의 입력을 Model이 반영하고, Model의 변화를 View에 갱신하는 역할
을 한다.- 강하게 연결된 셋은 독립성이 낮기 때문에 이들 각각의 재사용성은 굉장히 떨어지며, 그렇기 때문에 현재 iOS 개발에는 전통적인 MVC 아키텍쳐는 맞지 않다고 볼 수 있다.
Apple’s MVC
- 위의 이유로 애플에서는 새로운 MVC 아키텍쳐를 제시했다.
- 기존 MVC 패턴과는 다르다.
Controller
가View와 Model의 중재자 역할
을 함으로써 View와 Model에독립성
을 주었다.
하지만
Controller의 역할을 수행하는 UIViewController의 이름에서도 알 수 있듯이,Controller
가View를 포함
하는 것은 물론, View의Life Cycle까지 관리
하기 때문에 View와 Controller를 분리하기 어렵고, 재사용도 어렵다. 또한 테스트도 불가능하다.
ViewController가 너무 많은 역할을 하기 때문에 MVC를Massive View Controller
라고 부르기도 한다.
- 그러므로 실제 다이어그램은 다음과 같은 흐름을 갖게 된다.
- View와 Controller가 강하게 연결되어 있어 View Controller가 거의 모든 일을 한다.
좋은 아키텍쳐의 기준에 얼마나 부합하는가?
Distribution - Model과 View가 독립되었지만,View와 Controller가 너무 밀접하게 연관
되어있기 때문에독립성을 확보하지 못한다.
Testability - View와 Controller가 강하게 연결되어 있기 때문에,오로지 Model만 테스팅을 진행할 수 있다.
Ease of use - 다른 패턴들에 비해 코드 길이가 적고, 친숙한 아키텍처이기 때문에 개발자들이 쉽게 유지보수 할 수 있다.
- Cocoa MVC 패턴은
개발 진행 속도
에 있어서는 가장 빠르다고 할 수 있다. - 따라서 아키텍처가 중요하지 않을 때는 선택할만한 패턴이지만, 나중에 유지보수가 어렵다는 문제가 있다.
참고
Architecture) MVC 구조에 대해 블록 그림을 그리고, 각 역할과 흐름을 설명하시오.