MVC

MVC란 Model-View-Controller의 약자로 애플리케이션을 세 가지 역할로 구분한 개발 방법론입니다. 아래의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해 데이터를 가져오고 그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달하게 됩니다.
이러한 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 됩니다.
Model
- Model은 Data와 애플리케이션이 무엇을 할 것인지를 정의하는 부분으로 내부 비즈니스 로직을 처리하기 위한 역할을 합니다.
- 즉, 모델은 컨트롤러가 호출을 하면 DB와 연동하여 사용자의 입출력 데이터를 다루는 일과 같은 데이터와 연관된 비즈니스 로직을 처리하는 역할을 합니다.
- 데이터 추출, 저장, 삭제, 업데이트 등의 역할을 수행합니다.
Model은 다음과 같은 규칙을 갖고 있습니다.
- 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 합니다.
- View나 Controller에 대헤서 어떤 정보도 알지 말아야 한다.
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.
View
- View는 사용자에게 보여주는 화면(UI)이 해당됩니다.
- 사용자와 상호작용을 하며 컨트롤러로부터 받은 모델의 결과값을 사용자에게 화면으로 출력하는 일을 합니다.
- MVC에서는 여러개의 View가 존재할 수 있습니다.
- Model에서 받은 데이터는 별도로 저장하지 않습니다.
View는 다음과 같은 규칙을 갖고 있습니다.
- Model이 가지고 있는 정보를 따로 저장해서는 안됩니다.
- Model이나 Controller와 같이 다른 구성요소들을 몰라야 합니다.
- 변경이 일어나면 변경 통지에 대한 처리방법을 구현해야만 합니다.
📌 Model과 View는 서로의 존재를 몰라야 합니다.
Controller
- Controller는 Model과 View 사이를 이어주는 인터페이스 역할을 합니다.
- 즉, Model이 데이터를 어떻게 처리할지 알려주는 역할을 합니다.
- 사용자로부터 View에 요청이 있으면 Controller는 해당 업무를 수행하는 Model을 호출하고 Model이 업무를 모두 수행하면 다시 결과를 View에 전달하는 역할을 합니다.
Controller는 다음과 같은 규칙을 갖고 있습니다.
- Model이나 View에 대해서 알고 있어야 합니다.
- Model이나 View의 변경을 모니터링 해야 합니다.
질문 예시
mvc 패턴에 대해서 설명해주세요.
MVC 패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리한 것을 말합니다. 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 됩니다.
MVC 패턴을 사용할 경우 비즈니스 로직과 UI로직을 분리하여, 유지보수를 독립적으로 수행할 수 있으며, Model과 View가 다른 컴포넌트들에 종속되지 않아, 애플리케이션의 확장성, 유연성에 유리하다. 그러나 Controller에 다수의 Model과 View가 복잡하게 연결되어 있는 상황이 발생할 수 도 있다.
Spring에서는 MVC2 패턴을 발전시켜 DispatcherServlet이 중앙에서 HTTP 요청을 받고, Handler Mapping에 의해 적절한 Controller로 요청을 전달한 후 응답을 받아 전달하는 Front Controller 패턴으로 설계되어있습니다.
Reference
🔗 MVC 패턴이란?
🔗 [개발상식] MVC 패턴이란? (Model-View-Controller)
잘 읽었습니다. 좋은 정보 감사드립니다.