MVVM 패턴을 정리해보자👀
MVC에서 컨트롤러가 viewModel로 교체된 형태. MVC의 문제였던 뷰와 모델간의 의존성을 해결하기 위해 나온 패턴 중 하나이다. MVC와 가장 큰 차이점 2가지를 보통 양방향 데이터 바인딩, 커맨드 제공이라고 한다.
viewModel은 뷰가 필요로 하는 데이터와 액션을 담고 있는 컨테이너 객체라고 할 수 있다. 뷰로부터 데이터와 로직을 분리하는 것이 장점이다.
View
: 유저가 보게 될 유저 인터페이스. 뷰는 data point가 어디서 오는지 모른다.Model
: 모델은 data point를 나타내는 역할만 한다. 그 data point가 view에서 어떻게 나타날지에 대해서는 관심이 없다.ViewModel
: 뷰는 뷰모델에 묶여있으며, 뷰모델은 뷰와 뷰 바깥의 것을 붙여주는 역할을 한다. 뷰모델은 모델을 포함하고 있어 data point들을 갖고 있으며 커맨드(뷰로부터 뷰모델로 액션을 invoke하는 방법)와 뷰에게 바운드될 수 있는 다른 속성들도 갖고 있다.Element와 data를 연결하는 작업. 그래서 데이터가 변했을 때, 그 데이터에 묶여 있는 Element가 그 변화를 자동적으로 나타내게 된다. 또는 Element에 표시되고 있는 데이터 값이 변했을 때 기저에 있는 데이터 또한 update 된다. (e.g. 뷰에서 TextBox 엘리먼트를 편집했을 때 그 value 데이터가 업데이트 되는 것)