:Model,View,Controller의 구성요소를 세가지의 역할로 구분한 패턴
위의 그림처럼 사용자가 controller를 조작하면 controller는 model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.
:애플리케이션의 정보 데이터를 나타낸다. 또한 이러한 데이터 정보들의 가공을 책임지는 컴포넌트
-규칙
1.사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
:user가 보는 화면을 제공한다.출력을 담당한다.데이터 의 기반으로 사용자들이 볼수 있는 화면이다.
-규칙
1.모델이 가지고 있는 정보를 따로 저장해서는 안된다.
:view에서 일어나는 액션과 인풋값을 모델에게 던져주기전에 일련의 가공하는 과정을 한다.이벤트들을 처리하는 부분을 뜻한다.
-규칙
1.모델이나 뷰에 대해서 알고 있어야 한다.
:사용자가 보는 페이지 데이터처리, 중간을 제어아는 컨트롤 이 구성이 맡은바에만 집중할수 있어 효율적이게 된다.그래서 유지보수성,애플리케이션의 확장성 유연성 이 중요하고 중복코딩의 무제점이 사라진다.
View 는 Controller에 연결되어 화면을 구성하는 단위요소이므로 다수의 View들을 가질 수 있다.그리고 Model도 마찬가지로 여러개가 될수 있다. 즉 controller에 다수의 model과 View가 복잡하게 연결되어 있는 상황이 생길 수 있다.그렇게되면 새기능을 추가할 때마다 크고 작은 문제점을 가지고 스스 분석이나 테스트가 어렵게 될 수도 있다.