MVC란?

MVC는 디자인 패턴 중 하나로 Model, View, Controller의 약자입니다.

하나의 어플리케이션 혹은 프로젝트를 구성할 때 그 구성 요소를 세개의 역할로 구분합니다.

Untitled

Untitled

  1. 사용자가 Controller를 조작
  2. Controller는 Model을 통해서 데이터를 가져오고 그 데이터를 바탕으로 논리적인 처리 후 View를 제어
  3. View를 통해 사용자는 확인

→ 서로 분리된 컴포넌트는 각자의 역할에 집중할 수 있고 개발을 할때도 유지보수, 확장성, 유연성이 증가한다.

Model

DB, 상수, 변수 등등 어플리케이션의 정보, 데이터 또는 이러한 데이터의 가공을 책임지는 컴포넌트

Model은 다음과 같은 규칙을 갖습니다.

  1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.

  2. View 나 Controller에 대해서 어떤 정보도 알면 안된다.

    View나 Controller를 Model 에서 직접 수정할 수 있도록 참조하는 내부 속성값을 가지면 안된다.

  3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 한다.

    데이터가 변경되었을때, 이벤트를 발생시켜 누군가에게 변경 사실을 전달해야한다. 누군가 Model을 변경하도록 요청하는 이벤트를 보냈을때 이를 수신하여 처리할 방법을 구현해야한다.

View

사용자 인터페이스 요소 즉, 데이터 및 객체의 입출력을 담당

View는 다음과 같은 규칙을 갖습니다.

  1. Model이 가지고 있는 정보를 View에 저장해서는 안된다.

    출력을 위해 Model로 부터 전달 받은 데이터를 출력 이후 유지하기 위해서 View 내부에 저장하면 안된다.

  2. Model이나 Controller에 대해서 어떤 정보도 알면 안된다.

    다른 구성 요소를 참조하거나 어떻게 동작하는지 알아서 안되며, 단순히 데이터 입출력에 대한 인터페이스 기능만 가져야 한다.