MVC, MVP, MVVM 패턴

이강용·2024년 6월 4일
0

CS

목록 보기
33/109

MVC 패턴

  • 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴

모델

  • 모델(Model)은 애플리케이션의 데이터인 DB, 상수, 변수 등을 뜻함
  • 뷰에서 데이터를 생성하거나 수정할 때 컨트롤러를 통해 모델이 생성 또는 업데이트 됨
    • 예를들어, 사용자가 네모박스에 글자를 적는다고 하면, 이 때 모델은 네모박스의 크기정보, 글자내용, 글자의 위치, 글자의 포맷 정보 등이 된다.

  • 뷰(View)는 inputbox, checkbox, textarea 등 사용자 인터페이스 요소를 나타내며 모델을 기반으로 사용자가 볼 수 있는 화면을 뜻함
  • 모델이 가지고 있는 정보를 따로 저장하지 않아야 하며 변경이 일어나면 컨트롤러에 이를 전달

컨트롤러

  • 컨트롤러(Controller)는 하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할을 하며 이벤트 등 메인 로직을 담당
  • 모델과 뷰의 생명주기도 관리하며 모델이나 뷰의 변경 통지를 받으면 이를 해석하여 각각의 구성 요소에 해당 내용에 대해 알려줌

MVC 패턴의 장점

  1. 애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발할 수 있음
  2. 재사용성과 확장성이 용이함

MVC 패턴의 단점

  1. 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해짐

예시

Spring WEB MVC

MVC 패턴이 적용된 Web 모듈

디스패처 서블릿의 요청 처리 과정

1.	핸들러 조회: 클라이언트로부터 HTTP 요청이 들어오면, 디스패처 서블릿은 요청을 처리할 수 있는 핸들러를 조회
2.	핸들러 어댑터 조회: 핸들러를 처리할 수 있는 핸들러 어댑터를 조회
3.	핸들러 호출: 핸들러 어댑터가 핸들러를 호출하여 요청을 처리
4.	핸들러 처리: 핸들러 (컨트롤러)가 요청을 처리하고 결과를 반환
5.	ModelAndView 반환: 핸들러는 처리 결과를 ModelAndView 객체에 담아 디스패처 서블릿으로 반환
6.	viewResolver 호출: 디스패처 서블릿은 viewResolver를 호출하여 View를 찾음
7.	View 반환: viewResolver는 해당 요청에 맞는 View를 반환
8.	render(model) 호출: 디스패처 서블릿은 반환된 View의 render 메서드를 호출하여 Model 데이터를 렌더링
9.	HTML 응답: 최종적으로 렌더링된 HTML 응답을 클라이언트에게 반환

MVP 패턴

  • C(Controller)가 P(Presenter)로 교체된 패턴
  • V(View)와 P(Presenter)는 1:1 관계이므로 MVC보다 더 강한 결합을 지닌 디자인 패턴

MVVM 패턴

  • MVC의 C가 VM(뷰모델 ,view model)로 교체된 패턴
  • VM은 뷰를 추상화한 계층이며 VM : V = 1 : N 관계를 갖음

  • 커맨드 : 여러 요소에 대한 처리를 하나의 액션으로 처리할 수 있는 기법

  • 데이터 바인딩 : 화면에 보이는 데이터와 브라우저 상의 메모리 데이터를 일치시키는 방법

  • MVVM 패턴을 가진 대표적인 프레임워크는 뷰(Vue.js)가 있음

패턴구성 요소설명
MVCModel-View-ControllerModel은 데이터와 비즈니스 로직을 관리, View는 UI를 관리, Controller는 사용자 입력을 처리하고 Model과 View를 업데이트
MVPModel-View-PresenterModel은 데이터와 비즈니스 로직을 관리, View는 UI를 관리, Presenter는 View와 Model 간의 상호작용을 처리하고 로직을 담당
MVVMModel-View-ViewModelModel은 데이터와 비즈니스 로직을 관리, View는 UI를 관리, ViewModel은 View의 상태와 로직을 관리하며 데이터 바인딩을 사용하여 View를 업데이트
profile
HW + SW = 1

0개의 댓글