MVC 패턴
MVC 패턴이란?
MVC 패턴은 소프트웨어 디자인 패턴 중 하나로, Model-View-Controller의 약어입니다. 이 패턴은 소프트웨어의 구성 요소들을 세 가지 역할로 분리하여 각각의 역할에 따라 코드를 작성하고 유지보수할 수 있게끔 합니다.
- Model: 데이터와 데이터를 처리하는 로직을 담당합니다.
- View: 사용자 인터페이스(UI)를 담당합니다.
- Controller: Model과 View를 연결하여 사용자의 입력에 따라 데이터를 업데이트하고 UI를 갱신합니다.
사용자가 Controller를 조작하면 Controller는 Model을 통해 데이터를 가져오고
그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달하게 됩니다.
이러한 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 됩니다.
이렇게 역할을 분리함으로써 코드의 재사용성, 유지보수성, 확장성이 증가하고, 개발자들은 역할에 따라 코드를 분리하여 동시에 작업할 수 있습니다.
WEB에 적용 시
- 사용자가 웹사이트에 접속 (Users)
- controller는 사용자가 요청한 웹페이지를 서비스하기 위해서 모델을 호출 (Manipulates)
- Model은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후 그 결과를 Return
- Controller는 Model이 리턴한 결과를 View에 반영 (Updates)
- 데이터가 반영된 View는 사용자에게 보임 (Sees)
MVC패턴 방식
- 모델 1 방식: JSP에서 출력과 로직을 전부 처리
- 모델 2 방식: JSP에서 출력만 처리
모델 1 방식은 Controller 영역에서 View 영역을 같이 구현하는 방식.
사용자의 요청을 JSP가 전부 처리.
JSP는 JavaBean Service Class를 사용하여 웹브라우저 사용자가 요청한 작업을 처리하고 그 결과를 출력한다.
모델 2 방식은 웹브라우저 사용자의 요청을 서블릿이 받고, 서블릿은 해당 요청으로 View로 보여줄 것인지 Model로 보낼 것인지를 판단하여 전송한다. HTML와 JAVA를 분리해놨기 때문에 모델 1 방식에 비해 확장시키기도 쉽고 유지보수 또한 쉽다.
Model 1 | Model 2 | |
장점 | 빠르고 쉽게 개발 가능 | 디자이너와 개발자의 분업이 가능하며 유지보수 및 확장이 쉬움 |
단점 | JSP파일이 너무 커지며 Controller와 View가 혼재하므로 유지보수에 어려움 |
설계가 어려우며 개발 난이도가 높음 |
모델
데이터를 가진 객체를 모델이라 한다. 데이터는 내부의 상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름 속성으로 가질 수 있습니다. 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보합니다. 이와 같은 통보를 통해 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정할 수 있습니다.
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 함
- 뷰나 컨트롤에 대해서 어떠한 정보도 알지 말아야 함
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함
뷰
View는 HTML/CSS/JavaScript들을 모아둔 컨테이너입니다.
사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어옵니다.
- 모델이 가지고 있는 정보를 따로 저장 X
- 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 함
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 함