MVVM Pattern으로 개발을 다시 하기 전에 개념을 정리하고 싶었다. :)
Winform , Behind code
- View로 요청을 받음
- View의 control을 Behind code에서 바로 binding
- Model을 사용해서 business logic을 처리하더라도 View와 강하게 결합
Model - View(n) - Controller(1)
- Contoller로 요청을 받음
- Contoleer는 Model에게 Bisiness logic 처리 요청
- view는 모델을 참조하여 업데이트 함,
- View와 model과 의존성이 없앨수 없다.
- Model과 view의 의존성을 낮게하는 패턴을 사용하면 좋은 MVC가 된다
Model - view(1) - Presenter(1)
- View로 요청을 받음
- Presenter는 Model에게 Bisiness logic 처리 요청
- 그 결과는 View에게 알려준다.
- Model와 View과 완벽하게 분리
- View와 Presenter의 의존성이 강하다.(1:1결합)
Model - view(N) - Viewmodel(1)
- View로 요청을 받음
- Command : View의 Behavior를 Command로 View model에게 요청
- View Model은 Model에게 Bisness log을 요청
- Data binding : View Model의 속성 값이 변경되면 binding된 View control에게 notify가 가면서 자동 업데이트
- Model은 View로 부터 완벽히 분리
- MVP와 달리 Viewmodel은 여러 View에서 재사용이 가능하다.