아키텍처 패턴 중 하나이다.
아키텍처 패턴은 주어진 상황의 소프트웨어 구조에서 발생하는 문제점을 해결하기 위한 일반화된 재사용 가능한 솔루션으로 정의한다.
Model, View, Controller의 약자로 어플리케이션을 구성할 때 그 구성요소를 세가지 역할로 구분한 패턴이다.
Model(모델)
데이터를 가진 객체를 모델이라고 지칭한다.
모델의 규칙
1. 사용자가 가공하길 원하는 모든 데이터를 가지고 있어야 한다.
2. 뷰나 컨드롤러에 대해서 어떤 정보도 알지 말아야한다.
3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 한다.
View(뷰)
view는 클라이언트의 기술(html, css, javascript)들을 모아둔 컨테이너이다.
사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어온다.
뷰의 규칙
1. 모델이 가지고 있는 정보를 따로 정장해서는 안된다.
2. 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야한다.
3. 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야한다.
Controller(컨트롤러)
사용자가 접근한 url에 따라 사용자의 요청사항을 파악한 후 그 요청에 맞는 model 데이터를 의뢰하고 그 데이터를 view에 반영해서 사용자에게 알려준다.
컨트롤러의 규칙
1. 모델이나 뷰에 대해서 알고 있어야한다.
2. 모델이나 뷰의 변겨을 모니터링 해야한다.