MVC (Model - View - Controller)
1) 역할분담을 고려한 구조를 빠르게 구현 할 수 있음
Model에 넣기도 애매하고 View에도 넣기 애매한 코드들은 모두 Controller에 들어가게 되어서
Controller가 비대해진다 그래서 MVC를 Massive View Controller라고 풍자하기도 한다...!
ex) 날짜 데이터를 각 국가별 양식으로 포맷하는 코드.
비즈니스 로직이나 데이터라고 보기도 어렵고
UI라고 보기도 어렵다
결국 이와같은 Formatting 담당코드들은 Controller에 들어가게 된다
2) 애플의 MVC 패턴에서는 View와 Controller가 너무 친함
애플의 MVC 패턴은 기존 MVC 패턴과 다르다. View와 Controller가 강하게 연결되어 있어 View Controller가 거의 모든 일을 한다. ViewController에서는 Controller가 View의 life cycle(라이프 사이클)에 관여하기때문에 View와 Controller를 분리하기 어렵다. 그래서 앱을 테스트할 때, Model은 따로 분리되어 테스트를 할 수 있어도 View와 Controller는 강하게 연결되어 있기 때문에 각각 테스트하기 어렵다는 단점이 있다.
MVVM (Model - View - ViewModel)