참고
https://magi82.github.io/android-mvc-mvp-mvvm/
https://hackersstudy.tistory.com/71
MVC, MVP, MVVM을 설명하기 앞서 공통되는 Model과 View에 대해 설명하자면 아래와 같다.
Model : 프로그램에서 사용되는 실제 데이터 및 데이터 조작 로직을 처리하는 부분
View : 사용자한테 보여지는 UI 부분 / css, HTML, XML, XAML 등으로 렌더링 된 화면
- MVC (Model view Controller)
Controller : 사용자의 입력을 받고 처리하는 부분
모든 입력은 Controller에서 처리된다. 입력이 Controller로 들어오면 Controller는 입력에 해당하는 model을 조작하고
Model을 나타내어줄 View를 선택한다.
Controller는 View를 선택할 수 있기 때문에 하나의 Controller가 여러개의 View를 선택하여 Model을 나타내어 줄 수 있다.
이때 Controller는 View를 선택만하고 업데이트를 시켜주지 않기 때문에 View는 Model을 이용하여 업데이트 하게 된다.
Model을 직접 사용하거나 Model에서 View에게 Notify 해주는 방법, View에서 Polling을 통해 Model의 변화를 알아채는 방법등이 있다.
이와 같이 View는 Model을 이용하기 때문에 서로간의 의존성을 완벽히 피할 수 없는 단점이 있고
좋은 MVC 패턴이라함은 View와 Model간의 의존성을 최대한 낮게한 패턴이 좋은 패턴이라 할 수 있다.
- MVP (Model View Presenter)
Presenter : View에서 요청한 정보를 Model로 부터 가공해서 View로 전달하는 부분.
- MVVM (Model + View + ViewModel)
ViewModel 말그대로 View를 나타내주기 위한 Model이라고 생각하면 된다. View보다는 Model과 유사하게 디자인되며
View의 바인딩 될 때 가장 강력하다. View에서 입력처리함
Mvvm패턴의 가장 큰 장점이라 함은 Command와 DataBinding으로 MVP 패턴과 달리 View와의 의존성을 완벽히 분리할 수 있는 장점이 있다.
Command를 통하여 Behavior를 view의 특정한 ViewAction(Event)와 연결할 수 있으며, ViewModel의 속성과 특정 View의
속성들을 Binding 시켜 줌으로써 ViewModel 속성이 변경 될 때마다 View를 업데이트 시켜줄 수 있다.
ViewModel : View를 표현하기 위해 만들어진 View를 위한 Model
댓글