iOS 개발의 기본이 되는 디자인 패턴
MVC Pattern은 Model-View-Controller 디자인 패턴입니다. 그림을 보면서 이해해보겠습니다.
우선 관계도를 먼저 알아야 합니다.
1. Model은 ViewController에 dependency 관계를 갖고 있습니다. Model은 ViewController를 직접적으로 알진 못하나 property observing을 통해 ViewController와 통신합니다.
2. ViewController는 Model을 1~n개 직접적으로 참조하며 Model에 직접적으로 참조할 수 있습니다.
3. ViewController는 Model과 마찬가지로 View를 1~n개 직접적으로 참조할 수 있습니다.
4. View는 ViewController를 직접적으로 알진 못하나 IBActions를 통해 ViewController와 통신할 수 있습니다.
그리고 각각의 역할은 아래와 같습니다.
1. Model은 application의 data를 갖고 있습니다.
2. View는 시각적 요소를 담당합니다.
3. Controllers는 View와 Model을 연결합니다.
이 관계와 역할을 바탕으로 코드를 작성합니다.
Model인 Address 구조체가 있고, View인 AddressView 클래스가 있습니다.
그리고 그 둘을 프로퍼티로 갖고 있는 Controller인 AddressViewController가 있습니다.
이 관계로 Model과 View의 관계는 끊어지고 중간에 Controller가 그 둘을 이어줍니다.
또한, Model이 업데이트될 때 ViewController는 이를 감지하고 뷰를 업데이트하는 것을 확인할 수 있습니다.
View의 코드와 Model의 코드에 비해 ViewController의 코드가 많습니다. 바로 이 부분이 MVC 패턴의 큰 문제입니다. 따라서 이 문제를 해결하기 위해 다른 디자인 패턴을 사용하곤 합니다. 이 부분에 대해선 다음에 알아보도록 하겠습니다.
읽어주셔서 고맙습니다.
Raywenderlich의 Design Patterns by Tutorials를 참고했습니다.
https://www.raywenderlich.com/books/design-patterns-by-tutorials/v3.0