MVC, MVP, MVVM pattern
MVC pattern
Model, View, Controller 로 이루어진 디자인 패턴을 의미합니다.
모델은 어플리케이션의 데이터인 데이터베이스, 상수, 변수를 의미합니다.
뷰는 말 그대로 사용자가 보는 체크박스, 텍스트 입력창 등의 인터페이스 요소를 나타내며 모델을 기반으로 사용자가 볼 수 있는 화면을 뜻합니다.
모델이 가지고 있는 정보를 따로 저장하고 있지 않고,
변경이 발생하면 바로 컨트롤러에게 이를 전달합니다.
컨트롤러는 뷰와 모델 사이를 이어주는 징검다리 역할을 하는데, 주로 메인 비즈니스 로직이 존재합니다. 뷰와 모델의 생성과 소멸 주기인 생명주기도 관리하고 모델이나 뷰가 변경되면 이를 연관된 요소들에게 알려주는 역할을 합니다.
뷰에서 데이터가 생성되거나 변경되면 이 정보가 컨트롤러에게 전달되고 컨트롤러는 이를 통해 모델을 생성하거나 변경합니다.
장점
Model, View, Controller 등 어플리케이션 내부에 세부 구성요소로 역할을 나눴기 때문에 각각 자신의 역할에만 충실하게 개발하면 됩니다.
재 사용성과 확장성이 높습니다.
단점
어플리케이션이 크고 복잡해질수록 모델과 뷰의 관계가 복잡해집니다.
MVP pattern
MVC 패턴에서 Controller 가 Presenter 로 변경된 패턴입니다.
이때 프레젠터는 뷰와 1:1 관계이므로 MVC보다 결합성이 더욱 강해집니다.
MVVP pattern
MVC 패턴에서 Controller 가 View Model 로 바뀐 패턴을 말합니다.
VM은 뷰를 추상화한 계층이고
VM : V = 1 : N 관계를 갖습니다.
VM은 커맨드와 데이터 바인딩의 역할을 수행합니다.
커맨드 : 여러 요소에 대한 처리를 하나의 액션으로 수행할 수 있는 기법
데이터 바인딩 : 화면에 보이는 데이터와 브라우저 상의 메모리 상의 데이터를 일치시키는 것
대표적인 MVVM 패턴의 프레임워크로 vue.js 가 있습니다.
대표적인 예 : Spring WEB MVC
사용자(클라이언트)의 요청이 들어오면 디스패처 서블릿이 가장 먼저 이를 받게 됩니다.
디스패처 서블릿은 어떤 컨트롤러가 이를 처리하면 좋을지 결정하는데요. 주로 @RequestMapping 참고해서 결정합니다.
Controller 로 전해진 요청은 내부에서 서비스, 리포지토리, 데이터베이스를 통해서 데이터를 조회 및 가공하고 적절한 비즈니스 로직을 처리합니다.
그 결과 사용자에게 전달할 모델이 생성되고
뷰를 구현하기 위한 view resolver 를 참고합니다.
그 정보를 참고해서 view 가 렌더링 되면
마침내 응답 데이터를 사용자에게 보낼 수 있게 됩니다.
Last updated