개발
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