앞서 ViewModel과 View(MainActivity)를 연결하였다. (*VVM)
이제는 Model(Repository)를 연결할 차례이다. (MVVM)
2번을 행함으로써, 동작하는 기능은(ViewModel) 모델의 존재만을 알 뿐 어떤 데이터 형식인지 알지 못 한다.
=> 뷰와 모델 사이 의존성 제거
MVC와 마찬가지로 모듈화가 쉽고 확장성이 높다는 장점이 있다. 리팩토링도 쉽다. 예를 들면 모델 클래스에서 counter만 있다가 date라는 변수도 추가된다고 치자. repository가 없다면 ViewModel 클래스에서는 Model.date.get()와 Model.counter.get()으로 기능이 분리되어 점점 건널 수 없는 강을 건넌다.
BUT, repository로 하여금 get()에 date와 counter를 넣게 되면 ViewModel에서는 여전히 Model.get()을 사용할 수 있다.
따라서, Model class가 변할 때에, ViewModel, View 등은 코드가 (거의) 변하지 않는다는 것이다.

코드를 확인하자. getCounter()를 통해서만이 뷰모델은 counter의 값을 확인할수있다.

확인한 코드와 같이 _count, increment(), decrement() 모두 repository에서 구현한 것을 가져다 쓰는 모습이다.
영혼을 빼앗긴 CounterViewModel..
애석하도다.