MVC 디자인 패턴

김태훈·2024년 1월 1일
0

Spring

목록 보기
3/16

MVC

MVC란 Model - View - Controller 의 약자로 소프트웨어 디자인 패턴 중 하나입니다.
소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있습니다.

  • MVC패턴은 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리합니다.
  • MVC 패턴은 소프트웨어를 구성하는 요소들을 분리함으로써 코드의 재사용성과 유지보수성을 높이고, 개발자들 간의 협업을 용이하게 합니다.

Model, View, Controller의 관계

  1. 사용자의 Request를 Controller가 받는다.
  2. Controller는 Service에서 비즈니스 로직을 처리한 후 결과를 Model에 담는다.
  3. Model에 저장된 결과를 바탕으로 View에서 제어하여 사용자에게 전달한다.

Model

Model은 소프트웨어나 애플리케이션에서 정보 및 데이터 부분을 의미한다.
이는 Controller에게 받은 데이터를 조작(가공)하는 역할을 수행한다고 볼 수 있다.
즉, 데이터와 관련된 부분을 담당하며 값과 기능을 가지는 객체라고 보면 된다.

Model이 가지는 규칙은 다음과 같다.

  1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
  2. View나 Controller에 대해서 어떤 정보도 알지 말아야 한다.
  3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.

View

View는 입력값이나 체크박스 등과 같은 사용자 인터페이스 요소를 나타낸다.
이는 Controller에게 받은 Model의 데이터를 사용자에게 시각적으로 보여주기 위한 역할을 수행한다.
사용자에게 보여지는 화면이라고 볼 수 있다.

View가 가지는 규칙은 다음과 같다.

  1. Model이 가지고 있는 정보를 따로 저장해서는 안된다.
  2. Model이나 Controller를 알고 있을 필요가 없다.
  3. 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다.

Controller

Controller는 Model과 View 사이에서 데이터 흐름을 제어한다.
사용자가 접근한 URL에 따라 요청을 파악하고 URL에 적절한 Method를 호출하여 Service에서 비즈니스 로직을 처리한다.
이 후 결과를 Model에 저장하여 View에게 전달하는 역할을 수행한다.
결국 Controller는 Model과 View의 역할을 분리하는 중요한 요소이다.

이러한 Controller가 가지는 규칙은 다음과 같다.

  1. Model이나 View에 대해서 알고 있어야 한다.
  2. Model이나 View의 변경을 모니터링 해야 한다.

MVC 패턴의 규칙

  1. 모델은 컨트롤러나 뷰에 의존하면 안된다.
  • 모델 내부에 컨트롤러 및 뷰와 관련된 코드가 있으면 안된다.
  1. 뷰는 모델에만 의존해야 하고, 컨트롤러에는 의존하면 안된다.
  • 뷰 내부에 모델의 코드만 있을 수 있고, 컨트롤러의 코드가 있으면 안된다.
  1. 뷰가 모델로부터 데이터를 받을 때는 사용자마다 다르게 보여주어야 하는 데이터에 한해서만 받아야 한다.

  2. 컨트롤러는 모델과 뷰에 의존해도 된다.

  • 컨트롤러 내부에는 모델과 뷰의 코드가 있을 수 있다.
  1. 뷰가 모델로부터 데이터를 받을 때는 반드시 컨트롤러에서 받아야 한다.

0개의 댓글