MVC 디자인 패턴이란?

MVC란 ?

MVC 패턴의 등장

하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게됩니다.

그렇게 되면 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야 하기 때문에 유지보수가 어려워집니다.

HTML 코드 하나 수정하거나 비즈니스 로직하나를 수정하는데, 수백 수천줄의 HTML코드나 자바 코드가 함께 있다면 정말 지옥일 겁니다 🤯

그래서 이러한 문제를 해결하고자 MVC 패턴이 등장하게 되었습니다.

 

MVC 는 Model - View - Controller약자로, 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 3가지로 구분한 패턴입니다.

 

 

Model 데이터와 관련된 부분
View 사용자한테 보여지는 부분
Controller Model과 View를 이어주는 부분

 

각 구성요소 별 특징

Controller

Model(데이터) View(사용자 UI) 간의 상호 동작을 관리합니다.

HTTP 요청을 받아 파라미터를 검증하고, 비즈니스 로직을 실행합니다.

그리고 View에 전달할 결과 데이터를 조회해 Model에 담습니다.

View에서 사용자 요청에 대한 결과를 응답합니다.

즉, 데이터는 Model을 통해 전달하고 Model에 명령을 보내 데이터의 상태를 바꾸고, 어떤 화면을 사용자에게 보여줄지 View에 명령을 합니다.

 

Model

View에 출력할 데이터를 담아둡니다.

애플리케이션의 데이터( 데이터베이스, 상수, 초기화 값, 변수 등과 같은 애플리케이션의 정보 )를 처리합니다.

즉, 데이터베이스와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 역할을 합니다.

 

View가 필요한 데이터를 모두 Model에 담아 전달해주기 때문에 View는 비즈니스 로직이나 데이터 접근을 전혀 몰라도 되고, 화면을 렌더링하는 일에 집중할 수 있게됩니다.

 

View

사용자에게 화면을 통해 "보여주기 위한 역할"을 합니다. ( Ex : HTML, CSS 등 )

입력/출력 등과 같은 사용자 인터페이스(UI)를 담당하며, 데이터와 객체의 입력 및 출력사용자에게 화면을 통해 제공합니다.

Ex:) Input = Scanner, Output = System.out.println

 

 

MVC 디자인 패턴 규칙

1. Model은 Controller와 View에 의존하지 않아야 한다.
(Model 내부에 Controller와 View의 코드가 없어야한다.)

2. View는 Model에만 의존해야 하고, Controller에는 의존하면 안 된다.
( View 내부에는 Model의 코드만 있을 수 있고, Controller의 코드가 있어선 안된다. )

3. View가 Model로 부터 데이터를 받을 때는, 사용자마다 다르게 보여줘야 하는 데이터에 대해서만 받아야 한다.

4. Controller는 Model과 View에 의존해도 된다.
( Controller 내부에는 Model과 View의 코드가 있어도 된다. )

5. View가 Model로 부터 데이터를 받을 때, 반드시 Controller에서 받아야 한다.

 

MVC 디자인 패턴의 중요성

MVC를 적용하게 되면 서로 분리되어 각자의 역할에 집중할 수 있게 개발을 할수 있게 되고,

애플리케이션을 만든다면, 유지 보수의 편리성, 애플리케이션의 확장성, 그리고 유연성이 증가하고, 중복코딩이라는 문제점 또한 사라지게 됩니다.