개발

MVC, MVP, MVVM 패턴 비교

뽀글뽀글 개발자 2024. 10. 23. 11:32

주요 특징

MVC

  • Controller가 View를 직접 선택/업데이트
  • View가 Model 직접 참조 가능
  • 하나의 Controller로 다수 View 관리
  • View 의존성으로 단위 테스트 어려움
  • 장점: 단순하고 직관적인 구조

MVP

  • View-Presenter가 1:1 관계
  • View를 Interface로 추상화
  • View는 Model 직접 접근 불가
  • 독립적인 화면 단위 테스트 용이
  • 장점: 화면 단위 테스트 용이성

MVVM

  • ViewModel-View 데이터 바인딩
  • View/Model 변경 시 자동 동기화
  • UI 로직은 ViewModel에서 처리
  • View와 독립적인 단위 테스트 용이
  • 장점: 자동화된 데이터 바인딩

 

데이터 바인딩 방식

MVC

  • Controller를 통한 단방향 바인딩
  • Controller가 Model을 이용해 View를 직접 조작
  • View → Controller → Model → View 흐름

MVP

  • Presenter를 통한 View-Model 분리
  • View ↔ Presenter ↔ Model (Interface 기반)

MVVM

  • ViewModel을 통한 양방향 바인딩
  • View ↔ ViewModel → Model 자동 동기화

 

활용 케이스

MVC - SSR

  • 단순하고 직관적한 구조 필요 시
  • 다수 View 통합 관리 필요 시
  • 서버 사이드 렌더링 웹 애플리케이션
  • 예시: Spring MVC

MVP - 모바일

  • 화면 단위 테스트 중요 시
  • 독립적인 화면 단위 관리 필요 시
  • 모바일 애플리케이션
  • 예시: Android

MVVM - CSR

  • 복잡한 양방향 데이터 바인딩 필요 시
  • UI 상태 관리가 중요한 경우
  • 클라이언트 사이드 렌더링
  • 예시: Vue.js, Angular