데이터 드라이브
MVVM 의 경우 이전 개발 모델에서는 먼저 비즈니스 데이터를 처리한 다음 UI 에 대한 참조를 얻고 데이터 변경에 따라 UI 를 업데이트하고 UI 를 통해 사용자 입력을 얻어야 했습니다. MVVM 에서 데이터와 비즈니스 논리는 별도의 뷰 모델에 있으므로 View Model 은 데이터 및 비즈니스 논리에만 초점을 맞추고 UI 나 컨트롤은 처리할 필요가 없습니다. 데이터 자동 구동 UI 는 UI 를 자동으로 업데이트하고, UI 의 변화는 동시에 데이터에 자동으로 피드백되며, 데이터가 주도되고, 데이터에 신경을 쓰는 한 비즈니스 논리를 처리하는 것이 훨씬 쉬워집니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 데이터명언)
저결합도
MVVM 모드에서 데이터는 UI 와 독립적이며 ViewModel 은 데이터 처리 및 제공만을 담당합니다. UI 는 데이터 처리 방법을 결정합니다. ViewModel 은 UI 와 관련된 것을 포함하지 않으며 UI 컨트롤에 대한 참조를 보유하지 않습니다. 컨트롤이 변경되더라도 (TextView 를 edittext 로 변경) ViewModel 은 코드를 거의 변경할 필요가 없습니다. 자신의 데이터 처리에 집중하면 된다. MVP 에 UI 변경이 발생하면 UI 가져오기 방법 변경, UI 인터페이스 업데이트, UI 에서 입력 코드 가져오기 및 UI 객체에 액세스하는 속성 코드가 필요할 수 있습니다.
사용자 인터페이스 업데이트
MVVM 에서는 작업자 스레드에서 직접 보기 모델의 데이터를 수정할 수 있습니다 (데이터가 스레드 안전인 한). 나머지 데이터 바인딩 프레임워크가 도움이 되므로 신경 쓸 필요가 없습니다.
협동하다
MVVM 의 분업은 뷰와 뷰 모델이 느슨하게 결합되기 때문에 매우 분명합니다. 하나는 업무와 데이터를 처리하는 것이고, 다른 하나는 전문적인 UI 처리이다. 완전히 두 사람이 하고, 하나는 UI(xml 과 Activity), 하나는 ViewModel 을 쓰는 것이 더 효율적입니다.
재사용성
하나의 뷰 모델이 여러 뷰에서 재사용되고 동일한 데이터가 서로 다른 ui 에 표시됩니다. 버전 반복이 잦은 UI 변경의 경우 뷰 레이어만 변경하면 UI 에서 AbTest 를 하는 것이 더 편리합니다.
단위 테스트
뷰 모델에는 데이터 및 비즈니스 논리가 포함되어 있으며 뷰는 UI 에 초점을 맞추고 있으므로 테스트가 매우 편리하고 상호 의존성이 전혀 없습니다. UI 의 단위 테스트와 비즈니스 논리의 단위 테스트는 모두 낮은 커플링입니다.