사용자의 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 디자인 패턴이다.
비지니스 로직과 화면을 구분하는데 중점을 두고 있다. 관심분리와 응집도가 여기서도 사용된다.
우선 영어 설명부터 보자. 아래 출처 영상을 보고 정리한 글이다.
The important to note about this design is that the model and view never interact with each other.
any interaction between model and view is done through controller.
presentation of the data is only dealt inside view.
logic of the data is only dealt inside model.
presentation and logic of the data is completely separated from each other.
for example, user sends request to a server to get a list of cats
the server send the request to controller that handles the cats.
the controller then asked the model to return lists of all the cats.
the model will recur the database of list of all cats and return the lists back to the controller.
if the response back from the model is successful, then the controller asked to view associate with cats to return the presentation of the list of cats.
this view would take the list of cats from the controller and render the list into html that can be used by the browser.
the controller take the presentation and return it back to the user thus, ending the request.
쉽게 말하면 분업이다. model, view, controller 세 가지 함수(?)가 존재한다. 그리고 task를 중재하는 것은 controller이다.
model은 controller에서 명령하면, 로직을 이해하고 계산하여 데이터를 controller에 넘기는 일만 하는 함수이다.
view는 controller에게 넘겨받은 데이터를 html로 변환하여 controller에게 넘겨주는 함수이다.
controller는 model 과 view의 도움을 받아서 user가 요청한 것을 완성된 resource형태로 다시 넘겨주며 response한다.
이때 view와 model과 controller는 각자 함수내부에서 무슨일이 일어나는지 신경쓰지 않아도 된다. 철저히 분리되어있으며 그저 시키는 일만 하고 넘겨줄 뿐이다.
아래 그림을 살펴보면 더 쉽게 이해할 수 있다.
MVC패턴을 사용하는 프로젝트를 사용하고 싶다면 여기로 들어가보자. C#으로 만든다.
https://docs.microsoft.com/en-us/visualstudio/get-started/csharp/tutorial-aspnet-core?view=vs-2022