[용어 정리] MVC, MVP, MVVM 비교
[용어 정리] MVC, MVP, MVVM 비교
- 개발을 하기 위한 프레임워크 패턴들을 정리
- 종류로는 웹 개발시 많이 쓰이는 MVC부터 시작해서 파생되어 나온 MVP, MVVM, Viper등등이 있음
- 이 많은 프레임워크 패턴들의 공통적인 특징이자 장점
화면에 보여주는 로직과 실제 데이터가 처리 되는 로직을 분리
- 그냥 분리하지 않고 처리하면...... 엄청 복잡해짐
MVC (Model + View + Controller)
정리
- Controller로 사용자의 입력이 들어옴
- Controller는 Model을 데이터 업데이트 및 불러옴
- Model은 해당 데이터를 보여줄 View를 선택해서 화면에 보여주게 됨
MVC의 단점 : View와 Model이 서로 의존적
MVC의 단점을 없애기 위해 나온것이 MVP패턴
MVP (Model + View + Presenter)
- MVP의 Model과 View는 위의 사진과 같다.
Presenter : View에서 요청한 정보를 Model로부터 가공해서 View로 전달하는 부분
- Model과 View는 MVC와 동일하지만 사용자 입력을 View에서 받음
- 그리고 Model과 View는 각각 Presenter와 상호 동작을 하게 됨
- 항상 Presenter를 거쳐서 동작
- 그러므로 View와 Model은 서로를 알 필요가 없음. Presenter만 알면 됨
- 그래서 MVC의 단점인 View와 Model의 의존성이 없어짐
정리
- View로 사용자의 입력이 들어옴
- View는 Presenter에 작업을 요청 함
- Presenter에서 필요한 데이터를 Model에 요청
- Model은 Presenter에 필요한 데이터를 응답
- Presenter는 View에 데이터를 응답 함
- View는 Presenter로부터 받은 데이터로 화면에 보여주게 됨
MVP의 단점 : View와 Model의 의존성이 없는 대신 View와 Presenter가 1:1로 강한 의존성을 가짐
이런 단점을 해결할 또 다른 프레임워크가 바로 MVVM
MVVM(Model + View + ViewModel)
- Presenter대신 ViewModel이 존재
ViewModel : View를 표현하기 위해 만들어진 View를 위한 Model
- MVVM은 두가지 디자인 패턴을 사용
- Command패턴, Data Binding
- 이 두가지 패턴으로 인해 View와 View Model은 의존성이 완전히 사라짐
- MVP와 마찬가지로 View에서 입력이 들어옴.
- 입력이 들어오면 Command패턴을 통해 ViewModel에 명령을 내리고
- Data Binding으로 인해 ViewModel의 값이 변화하면 바로 View의 정보가 바뀜
정리
- View에 입력이 들어오면 Command패턴으로 ViewModel에 명령을 함
- ViewModel은 필요한 데이터를 Model에 요청
- Model은 ViewModel에 필요한 데이터를 응답
- ViewModel은 응답 받은 데이터를 가공해서 저장
- View는 ViewModel과의 Data Binding으로 인해 자동으로 갱신
출처
댓글
댓글 쓰기