개발 지식/WEB

MVC 패턴

언젠간코딩잘함 2023. 4. 4. 23:57

MVC 패턴이란?

MVC 패턴은 소프트웨어 디자인 패턴 중 하나로, Model-View-Controller의 약어입니다. 이 패턴은 소프트웨어의 구성 요소들을 세 가지 역할로 분리하여 각각의 역할에 따라 코드를 작성하고 유지보수할 수 있게끔 합니다.

 

  •  Model: 데이터와 데이터를 처리하는 로직을 담당합니다.
  •  View: 사용자 인터페이스(UI)를 담당합니다.
  •  Controller: Model과 View를 연결하여 사용자의 입력에 따라 데이터를 업데이트하고 UI를 갱신합니다.

 

사용자가 Controller를 조작하면 ControllerModel을 통해 데이터를 가져오고

그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달하게 됩니다.



이러한 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 됩니다.

 

이렇게 역할을 분리함으로써 코드의 재사용성, 유지보수성, 확장성이 증가하고, 개발자들은 역할에 따라 코드를 분리하여 동시에 작업할 수 있습니다.

 

 

WEB에 적용 시

 

  1.  사용자가 웹사이트에 접속 (Users)
  2.  controller는 사용자가 요청한 웹페이지를 서비스하기 위해서 모델을 호출 (Manipulates)
  3.  Model은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후 그 결과를 Return
  4.  Controller는 Model이 리턴한 결과를 View에 반영 (Updates)
  5.  데이터가 반영된 View는 사용자에게 보임 (Sees)

 


MVC패턴 방식

 

  •  모델 1 방식: JSP에서 출력과 로직을 전부 처리
  •  모델 2 방식: JSP에서 출력만 처리

 

Model 1

 

모델 1 방식은 Controller 영역에서 View 영역을 같이 구현하는 방식.

사용자의 요청을 JSP가 전부 처리.

JSP는 JavaBean Service Class를 사용하여 웹브라우저 사용자가 요청한 작업을 처리하고 그 결과를 출력한다.

 

 

 

Model 2

 

모델 2 방식은 웹브라우저 사용자의 요청을 서블릿이 받고, 서블릿은 해당 요청으로 View로 보여줄 것인지 Model로 보낼 것인지를 판단하여 전송한다. HTML와 JAVA를 분리해놨기 때문에 모델 1 방식에 비해 확장시키기도 쉽고 유지보수 또한 쉽다.

 

  Model 1 Model 2
장점 빠르고 쉽게 개발 가능 디자이너와 개발자의 분업이 가능하며 유지보수 및 확장이 쉬움
단점 JSP파일이 너무 커지며 Controller와
View가 혼재하므로 유지보수에 어려움
설계가 어려우며 개발 난이도가 높음

 

 

 


모델

 

데이터를 가진 객체를 모델이라 한다. 데이터는 내부의 상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름 속성으로 가질 수 있습니다. 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보합니다. 이와 같은 통보를 통해 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정할 수 있습니다.

 

  •  사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 함
  •  뷰나 컨트롤에 대해서 어떠한 정보도 알지 말아야 함
  •  변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함

 

 

View는 HTML/CSS/JavaScript들을 모아둔 컨테이너입니다.
사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어옵니다.

 

  •  모델이 가지고 있는 정보를 따로 저장 X
  •  모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 함
  •  변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함