다른 구성요소(view, controller)는 참조하거나 어떻게 동작하는지 알아서는 안된다
변경이 일어나면 변경을 받거나 전달할 수 있어야 한다
재사용이 가능해야하며 다른 인터페이스에서도 변하지 않아야 한다
View : 레이아웃과 화면 처리
model의 정보를 따로 저장해서는 안된다. 화면에 표시하기 위해 정보를 전달받는 데 그 정보를 유지하기 위해서 view 내부에 저장하면 된다
다른 구성요소는 참조하거나 어떻게 동작하는지 알아서는 안된다
변경이 일어나면 변경을 전달할 수 있어야 한다
Controller : 명령을 모델과 뷰 부분으로 라우팅(routing)
다른 구성요소에 대해 알고 있어야 한다. model과 view는 서로의 존재를 모르고 변경의 전달 및 수신 방법만 가지고 있는데 controller는 모두 알고 있어야 한다
model이나 View의 변경을 모니터링 해야 한다
사용하는 이유
사용자가 보는 페이지, 데이터처리, 그리고 이 2가지를 중간에서 제어하는 컨트롤, 이 3가지로 구성되는 하나의 애플리케이션을 만들면 각각 맡은바에만 집중을 할 수 있게 됩니다. 공장에서도 하나의 역할들만 담당을 해서 처리를 해서 효율적이게 됩니다. 여기서도 마찬가지입니다
서로 분리되어 각자의 역할에 집중할 수 있게끔하여 개발을 하고 그렇게 애플리케이션을 만든다면, 유지보수성, 애플리케이션의 확장성, 그리고 유연성이 증가하고, 중복코딩이라는 문제점 또한 사라지게 되는 것입니다. 그러기 위한 MVC패턴입니다