우선 MVVM의 구조는
Model - View - ViewModel로 이루어져 있다.
MVVM의 핵심은 View와 ViewModel의 구조에 있다.
이런식으로 MVVM이 동작하고 있는데 이 과정을 자세하게 알아봅니다.이런식으로 MVVM은 동작하고 밑에서 자세하게 Model, View, ViewModel이 어떤 일들을 하는지 자세하게 알아봅시다
데이터를 다루는 부분
UI로 사용자에게 보여주는 부분
이 설정을 직접 하는 것이 Data Binding을 통한 작업이다.
이런식으로 MVVM에는 Binder가 존재해 ViewModel의 값이 변하면 옵저버 패턴을 이용해서 View가 스스로 UI를 설정 할 수 있는 것이다.
View와 ViewModel의 관계
- ViewModel은 View의 추상화 개념, View의 존재를 알지 못하기 때문에 재사용이 가능합니다
- ViewModel은 View가 데이터바인딩 할 수 있는 속성과 명령을 구현해 View에게 알려야 합니다.
- View는 UI스레드를 차단하지 않은 상태로 유지해야되므로 ViewModel에서 I/O 작업에 비동기 메소드를 사용하고, 이벤트를 발생해 View에 속성 변경 사항을 비동기로 알려야 합니다.
- ViewModel과 View는 1:N관계를 유지 합니다.
ViewModel과 Model의 관계
- Model은 ViewModel, View 그 누구도 알아선 안됩니다.
- 마찬가지로 ViewModel과 Model은 1:N관계를 유지 하고 있습니다
- ViewModel은 Model의 데이터를 받으면 가공해서 View에게 전달합니다.
이렇게 정의할 수 있고 MVVM의 장점과 단점에 대해 알아보겠습니다
MVVM 장점
- View와 Model은 독립적이고 ViewModel이 어댑터 역할을 하기 때문에 코드의 간섭을 줄임
- ViewModel과 View가 1 : N 관계이기 때문에 여러 View를 생성할 수 있음
- View와 ViewModel을 바인딩하기 때문에 코드의 양이 줄어듭니다
MVVM 단점
- 간단한 UI에서도 ViewModel을 설계하는데 어려움이 있습니다.
- MVC Controller처럼 복잡해지면 ViewModel도 거대해집니다.
- 데이터 바인딩이 필수기 때문에 많은 메모리를 사용합니다.