mooni
[Design Pattern] MVC & MVP & MVVM 본문
MVC(Model View Controller) : 애플리케이션의 구성 요소를 세가지 역할로 구분하여 개발하여 재사용성과 확장성이 용의함

Model : 애플리케이션의 데이터인 DB, 상수, 변수 등
View : inputbox, checkbox 등 사용자 interface 요소
Controller : 하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할, event 등 메인 로직을 담당하며 모델과 뷰의 생명 주기를 관리함
=> 대표적인 MVC 패턴은 Spring이 있음
MVP(Model View Presenter) : View와 Presenter는 1:1 관계이므로 MVC 패턴보다 더 강한 결합을 가짐

MVVM(Model View ViewModel) : Controller대신 View Model을 사용

View Model : View를 더 추상화 한 계층, 커맨드와 데이터 바인딩을 가져 View와 View Model 사이의 양방향 데이터 바인딩을 지원
> 커맨드 : 여러가지 요소에 대한 처리를 하나의 액션으로 처리할 수 있게 하는 기법
> 데이터 바인딩 : 화면에 보이는 데이터와 웹 브라우저의 메모리 데이터를 일치시키는 기법(View Model을 변경하면 View가 변경됨)
=> 대표적인 MVVM 패턴은 Vue.js가 있음
패턴 | 구성 요소 | View 역할 | Model과의 연결 | 특징 |
MVC | Model, View, Controller | 사용자 입력만 처리 (로직 없음) | Controller가 Model 업데이트 | View와 Controller 간 양방향 |
MVP | Model, View, Presenter | 사용자 입력 전달 + UI 업데이트 | Presenter가 Model과 통신 | View와 Presenter 간 명확한 분리, 테스트 용이 |
MVVM | Model, View, ViewModel | 데이터 바인딩 (자동 반응) | ViewModel이 Model을 감시 | View와 ViewModel 간 양방향 바인딩, React/Vue와 유사 |
'etc.' 카테고리의 다른 글
[Programming Paradigm] 선언형, 함수형, 객체지향, 절차형 프로그래밍 (0) | 2025.04.09 |
---|---|
[Design Pattern] 이터레이터 패턴(Iterator Pattern) & 노출모듈 패턴(Revealing module Parttern) (0) | 2025.04.06 |
[Design Pattern] 프록시 패턴(Proxy Pattern) (0) | 2025.04.06 |
[Design Pattern] 옵저버 패턴(Observer Pattern) (0) | 2025.04.06 |
[Design Pattern] 전략 패턴(Strategy Pattern) / 정책 패턴(Policy Pattern) (0) | 2025.04.05 |