본문 바로가기

iOS

[iOS] 디자인 패턴 | MVC

MVC 패턴 (Model - View - Controller)

MVC 디자인 패턴은 애플리케이션의 객체를 모델, 뷰, 컨트롤러의 세 가지 역할 중 하나로 할당한다.

이 패턴은 앱 내에서 객체가 수행하는 역할 뿐만 아니라 객체가 서로 통신하는 방식을 정의한다.

세 유형의 객체는 각각 추상적인 경계에 의해 다른 객체와 구분되며, 그 경계를 넘어 다른 유형의 객체와 통신한다.

각각의 역할을 분리하여, 개발과 유지보수를 편리하게 한다.

 

 

모델 (Model)

프로그램이 하는 일 자체를 의미한다.

애플리케이션과 관련된 데이터를 캡슐화하고, 해당 데이터를 조작하고 처리하는 로직과 계산을 정의한다.

ex. 게임 속 캐릭터의 정보, 주소록의 연락처 

 

 

뷰 (View)

사용자와 상호작용하는 interface

애플리케이션 내에서 사용자가 볼 수 있는 객체

뷰 객체의 주된 목적은 애플리케이션의 모델 객체의 데이터를 보여주고, 해당 데이터를 편집할 수 있도록 한다.

ex. 주소록의 연락처가 보이는 화면

 

 

컨트롤러 (Controller)

모델과 뷰를 연결하는 역할

UI에서 발생하는 일에 따라 모델을 업데이트하고, 반대로 모델에 변동이 생기면 UI도 변하도록 한다.

하나 이상의 애플리케이션 뷰 객체와 하나 이상의 모델 객체 사이의 중개자 역할을 한다. ➡️ 모델과 뷰에 독립성을 줌 

사용자가 버튼을 탭하거나 텍스트 필드에서 텍스트를 입력하는 것처럼, 뷰 객체에서 이루어진 사용자의 동작 및 의도를 해석하며, 신규 혹은 변경된 데이터를 모델 객체에 전달한다.

즉, 뷰 객체가 모델 객체의 변경사항을 인지하거나, 그 반대가 가능하도록 하는 매개체가 된다.

컨트롤러 객체는 애플리케이션의 설정 및 조정 작업을 수행할 수도 있으며, 다른 객체들의 생애 주기를 관리하기도 한다.

 


 

모델 - 뷰는 서로 접근할 수 없고, 컨트롤러는 모델과 뷰에 접근할 수 있다.

 

모델 ➡️ 컨트롤러

모델에서 컨트롤러로 접근은 가능하지만, MVC 패턴에 어긋난다.

MVC 패턴에 따르면, 모델은 데이터의 값을 바꾸고 관리하는 것만 담당하기 때문이다.

그렇다면, 모델의 값이 바뀌었을 때 이 값을 어떻게 컨트롤러에 전달할까 ? ➡️ Notification

Notification : 모델이 컨트롤러에게 자신의 값이 바뀌었다는 사실을 알려서, 컨트롤러가 이를 듣고 모델에 접근하도록 함

 

 

뷰 ➡️ 컨트롤러

뷰의 역할은 화면을 갱신하는 것이기 때문에, 뷰에서의 변화를 컨트롤러에게 직접 전달하면 안된다.

iOS에서는 이를 Delegate, Datasource를 사용해 해결한다.

Delegate, Datasouce 는 따로 정리해서 올리겠습니다.... 

 

 

 

 

[iOS Swift] MVC 패턴

MVC 패턴은 Model, View, Controller 그룹으로 나누는 것입니다. Model은 프로그램이 하는 일 자체를 의미하며 UI와는 상관 없습니다. View는 사용자와 상호작용하는 interface입니다. Controller는 Model과 View..

dvpzeekke.tistory.com

 

[LECTURE] 2) Model-View-Controller : edwith

Model-View-Controller 여러가지 디자인 패턴 중, iOS 애플리케이션 개발에 적용되는 MVC(Model-View-Controller) 패턴에 대해 알아봅시다. 객체... - 부스트코스

www.edwith.org

 

'iOS' 카테고리의 다른 글

[iOS] 뷰의 재사용  (0) 2020.06.11
[iOS] 테이블 뷰 (TableView) - DataSource, Delegate  (0) 2020.06.10
[iOS] Foundation  (0) 2020.06.10
[iOS] UIKit  (0) 2020.06.10
[iOS] 내비게이션 인터페이스  (0) 2020.06.09