1. 개요
| |
| MVVM의 구조 |
Model-View-View Model.
소프트웨어 아키텍처 패턴 중 하나로, 애플리케이션을 데이터를 처리하는 모델(Model), 사용자에게 보여지는 UI인 뷰(View), 뷰에 바인딩되어 모델과 뷰 사이를 이어주는 뷰 모델(View Model)로 분리하는 방식이다.
2. 특징
모델과 뷰 뿐만 아니라 뷰와 뷰 모델 간의 의존성까지 최소화한 형태로, UI가 실제 코드와 거의 완벽하게 분리된 것이 특징이다. 덕분에 데이터 처리 로직과 UI 디자인 간 상호 영향이 적어 개발이 용이하다. MVVM 패턴을 적극적으로 지원하는 WPF에서 이 장점이 특히 두드러지며, 흔히 WPF의 장점으로 꼽히는 '개발자와 UI 디자이너 간의 협업이 용이하다.'는 말은 일반적으로 WPF 애플리케이션이 MVVM 패턴으로 개발되었을 때 적용되는 것이라고 봐도 무방하다.MVVM에서는 패턴 구현을 위해 Command 패턴과 Data Binding을 적극적으로 사용한다. Command 패턴은 뷰에서 UI를 처리하기 위해 뷰 모델에 전달하는 요구 사항을 캡슐화한 것이고, Data Binding은 뷰와 뷰 모델 사이의 데이터를 실시간으로 동기화하는 기술이다. 뷰 모델의 데이터가 바뀌면 화면이 자동으로 업데이트되고, 반대로 사용자가 화면에 값을 입력하면 뷰 모델의 데이터도 즉시 변경된다. 이것은 별도의 코드를 복잡하게 작성하지 않아도 양방향으로 데이터 흐름이 유지되는 상태를 말하는데 이 두 가지 기술을 활용하면 뷰는 화면을 그리는 일에만 집중하고 뷰 모델은 데이터 처리와 로직 수행이라는 본연의 역할에만 충실할 수 있게 된다.