MVC는 Model, View, Controller의 약자로, 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이를 잘 사용하면 UI로부터 비즈니스 로직을 분리하여 서로 독립적으로 존재해 유지보수 및 수정이 용이해진다.
각 컴포넌트를 하나씩 살펴보도록 하자.
Model
애플리케이션의 모든 정보와 데이터를 가진 객체이다.
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
- 뷰나 컨트롤러에 대해 어떤 정보도 알지 말아야 한다.
- 변경이 일어나면 변경에 대한 처리 방법을 구현해야 한다.
모델의 속성이 변경되면 이벤트를 발생시켜 누군가에게 전달해야 하고, 누군가 모델을 변경하도록 요청하면 해당 이벤트를 수신하는 방법을 구현해야 한다.
View
텍스트, 체크박스 등 화면에 보여지는 사용자 인터페이스(UI) 요소를 나타낸다. 유저가 보게 되는 시각적 요소를 지칭한다.
- 모델이 가지고 있는 정보를 따로 저장해선 안된다.
- 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 한다.
모델은 그냥 데이터를 받으면 화면에 표시하고. 끝.
- 변경이 일어나면 변경에 대한 처리 방법을 구현해야 한다.
사용자가 화면에 표시된 내용을 변경하게 되면 컨트롤러가 이를 모델에게 전달해서 모델을 변경해야 할 것이다.
Controller
모델과 뷰를 잇는 다리 역할을 한다. 비즈니스 로직을 구현한 부분이다. 즉 사용자의 동작에 따른 이벤트를 처리한다.
- 모델이나 뷰에 대해 알고 있어야 한다.
- 모델이나 뷰의 변경을 모니터링 해야 한다.
이와 같이 하나의 프로젝트를 세 부분으로 나누어 구현함으로써 각자의 역할에만 집중할 수 있어 유지보수 및 버전업이 용이해질 것이다.