brunch

You can make anything
by writing

C.S.Lewis

by 윤민섭 Nov 17. 2020

MVC Pattern

iOS 개발의 기본이 되는 디자인 패턴

MVC Pattern은 Model-View-Controller 디자인 패턴입니다. 그림을 보면서 이해해보겠습니다.



우선 관계도를 먼저 알아야 합니다.


1. ModelViewController에 dependency 관계를 갖고 있습니다. ModelViewController를 직접적으로 알진 못하나 property observing을 통해 ViewController와 통신합니다.

2. ViewControllerModel을 1~n개 직접적으로 참조하며 Model에 직접적으로 참조할 수 있습니다.

3. ViewControllerModel과 마찬가지로 View를  1~n개 직접적으로 참조할 수 있습니다.

4. ViewViewController를 직접적으로 알진 못하나 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


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari