Model - View - Controller Pattern

이숭인·2021년 7월 17일
0

Model - View - Controller

MVC(Model-View-Controller) 디자인 패턴 은 애플리케이션의 객체를 Model, View, Controller의 세 가지 역할 중 하나의 역할로 할당합니다.

이 패턴은 애플리케이션 내에서 객체가 수행하는 역할 뿐만 아니라 객체가 서로 통신하는 방식을 정의합니다.

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

애플리케이션 내의 특정 MVC 유형을 한데 모아 레이어(예: 모델 레이어)라고도 합니다.


Model Objects

  • 데이터 캡슐화, 데이터 조작, 처리, 계산 로직을 정의

  • 하나의 모델 객체는 일대일 혹은 일대다 대응관계를 맺을 수 있다.

  • Model 객체는 View 객체에 직접적으로 연결되어서는 안된다.
    (Controller를 통해 간접적으로 연결)

모델 예:

  • 캐릭터 정보 (닉네임, 레벨, 스텟 등 ...)

  • 전화번호부의 연락처

즉, 사용자 인터페이스나 표시 문제와 관련이 있어서는 안 됩니다 !


View Objects

  • 애플리케이션 내에서 사용자와 직접 상호작용하는 객체 (화면)

  • Model객체의 데이터를 보여주고, 사용자로부터 이벤트를 받아 처리한다.


Controller Objects

  • Controller 객체는 하나 이상의 View 객체, 하나 이상의 Model 객체 사이의 코디네이터 혹은 중개자 역할을 한다.

  • Model - View - Controller 디자인 패턴 에서 Controller 객체는 View 객체에서 일어난 동작 및 의도를 해석하며, 신규 혹은 변경된 데이터를 Model 객체에 전달한다.

  • iOS 환경의 Cocoa Touch 프레임워크는 Coordinating Controllers, View Controller의 두 가지 기본 컨트롤러 유형을 제공합니다.


Coordinating Controllers

코디네이팅 컨트롤러는 애플리케이션 전체 혹은 일부 기능을 감독하고 관리 합니다. 애플리케이션별로 다른 로직이 각 애플리케이션에 주입(injected)되는 장소라고 할 수 있으며, 그 기능은 다음과 같습니다.

  • 델리게이션(delegation) 메시지에 응답하고 알림(notifications)을 관리.

  • 사용자가 버튼과 같은 컨트롤을 탭 하거나 클릭함에 따라 전송되는 동작 메시지(action message)에 응답.

  • 객체 간의 연결을 확립하거나 기타 설정 작업을 수행. (예: 애플리케이션을 시작하는 경우)

  • 소유한(owned) 객체의 생명 주기 관리.

  • iOS 애플리케이션에서는 뷰 컨트롤러가 코디네이팅 컨트롤러의 역할을 겸하는 경우가 많습니다.


View Controller

  • iOS의 뷰 컨트롤러는 UIViewController 서브클래스의 인스턴스입니다.

  • UIKit 에서 View Controller 는 콘텐츠를 화면에 표시하는 View 를 관리하며, 해당 View에 대한
    참조(reference)를 유지하고, 뷰의 표현(presentation)후속 View 로의 전환(transition)을 관리합니다.

  • UIKitUITableViewController 와 같은, UIViewController 의 여러 특수 목적 서브클래스를 제공합니다.

  • 기기의 방향(orientation)이 바뀔 때 뷰를 회전시킵니다.

profile
iOS Developer

0개의 댓글