MVC(Model-View-Controller) Pattern은 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 Software Design Pattern입니다. 이는 소프트웨어의 비즈니스 로직과 화면을 구분하는 것에 중점을 두고 있습니다. MVC에 기반을 둔 다른 Design Pattern으로는 MVVM(Model-View-ViewModel), MVP(Model-View-Presenter), MVW(Model-View-Whatever)가 있습니다.
MVC Pattern의 세 가지 부분은 간단하게 다음과 같이 설명할 수 있습니다.
Model : 데이터와 비즈니스 로직을 관련합니다.
View : 레이아웃과 화면을 처리합니다.
Controller : 사용자의 입력을 처리하여 모델과 뷰에 결과를 반영합니다.
Model, View, Controller를 자세히 보면 다음과 같습니다.
Model
소프트웨어가 포함해야할 데이터가 무엇인지 정의합니다. 데이터에 변화가 생기면 Model은 View에게 알리고, View는 변화를 토대로 화면을 재구성합니다. 중요한 것은 이렇게 데이터가 생성-변경-삭제되는 비즈니스 로직은 Model에서만 이루어져야 한다는 것입니다. Controller에서 데이터를 임의로 수정하면 안됩니다.
View
데이터를 보여주는 방식을 정의합니다. 이미지, 텍스트 등 사용자에게 보여지는 UI 부분이 이에 해당됩니다. View는 항상 Model을 Observe하여 Model의 데이터가 변경되면 View Event를 실행하는 방식으로 이루어집니다.
Controller
사용자로부터의 입력에 대한 응답으로 Model 혹은 View를 업데이트하는 로직을 포함합니다. 사용자가 View를 통해 입력을 시도하면, Controller는 그에 관한 Input Event를 Handling합니다. 일반적으로는 이러한 Input을 통해 Model을 업데이트하지만, 화면 속의 리스트를 정렬한다든지의 Model까지 갈 필요가 없는 명령은 바로 View로 전달되기도 합니다.
이러한 MVC Pattern의 목적은 수행 역할을 분리하여 코드 관리 및 업무의 효율을 높이는 것에 있습니다.
자료 출처