MutableStateOf와 MVVM(2)

yakky·2024년 1월 16일
0

android

목록 보기
3/4

MutableStateOf와 MVVM 1편

앞서 ViewModel과 View(MainActivity)를 연결하였다. (*VVM)
이제는 Model(Repository)를 연결할 차례이다. (MVVM)

Model Class

  1. data class로 모델의 형식을 짠다.
  2. class repository를 만들어 모델 클래스와 뷰모델 클래스를 서로 연결 시켜준다.

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 등은 코드가 (거의) 변하지 않는다는 것이다.

Model Class CODE

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

ViewModel Class REFACTORING

확인한 코드와 같이 _count, increment(), decrement() 모두 repository에서 구현한 것을 가져다 쓰는 모습이다.

 영혼을 빼앗긴 CounterViewModel..

애석하도다.

완성

profile
행복한 한 주 되세요

0개의 댓글