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

  1. 사용자(클라이언트)의 요청이 들어오면 디스패처 서블릿이 가장 먼저 이를 받게 됩니다.

  2. 디스패처 서블릿은 어떤 컨트롤러가 이를 처리하면 좋을지 결정하는데요. 주로 @RequestMapping 참고해서 결정합니다.

  3. Controller 로 전해진 요청은 내부에서 서비스, 리포지토리, 데이터베이스를 통해서 데이터를 조회 및 가공하고 적절한 비즈니스 로직을 처리합니다.

  4. 그 결과 사용자에게 전달할 모델이 생성되고

  5. 뷰를 구현하기 위한 view resolver 를 참고합니다.

  6. 그 정보를 참고해서 view 가 렌더링 되면

  7. 마침내 응답 데이터를 사용자에게 보낼 수 있게 됩니다.

Last updated