2016-10-27 1 views
3

MVVM 패턴을 이해하려고하는데 명확하지 않은 몇 가지 문제가 있습니다. 내 Xamarin Forms 응용 프로그램에는 몇 가지보기가 있습니다 (이는 매우 분명합니다). 모두가 다른 ModelView 클래스에 바인딩되어야합니까? 아니면 MV가 하나만 있어야할까요?MVVM 패턴에 ViewModel 클래스가 하나만 있어야하나요?

+6

이 달려있다. 일반적으로 각 뷰에는 자체 VM이 있지만 두 개의 유사한 뷰가 VM을 공유 할 수 있습니다. 모든 View가 동일한 VM을 사용하는 것은 드문 일이지만 단순한 앱의 경우에는 의미가 있습니다. – Jason

답변

1

필자는 항상 "각 뷰에는 고유 한 VM이 있습니다"라고 생각했습니다.이 모델은 포괄적 인 디자인의 하위 집합입니다.

내가 아픈 경험에서 말하지만 : 그들이 지원하는 뷰/UI만을 기반으로 격리 된 모델을 설계하지 마십시오. 포괄적 인 모델 백엔드가 없으면 모든 조각을 일관되고 완벽한 비즈니스 모델로 통합하는 것이 어려울 것입니다. 빈약 한 클래스, 잉여 비트, 불완전하고 잘못된 검증, 동일한 이름 - 다른 이름, 기존 코드가있는 비 호환성, 해킹 코드의 덩어리, 서로의 코드를 깨는 프로그래머, 재사용 불가능, 기존 클래스 재사용 없음. 우리 모두에게 당황 스러울 정도로 3 개월 만에 실패 테스트를 마쳤습니다.

1

예와 아니오
-> 기본적으로 생각이 ViewModel이 하나 개의보기에 의해 사용되어야한다는 것이다. ViewModel을 사용하여 영역을 채우거나 다른 위치에 표시 할 때마다 ViewModel은 "재사용"됩니다.
아니요 ->보기 모델에서 여러 모델을 사용할 수 있습니다. 뷰 모델의 목적은 비즈니스/데이터 계층 (즉, 모델)을 추상화하는 것입니다. 그러나 일반적으로 둘 이상의 모델을 사용하면보기가 너무 큽니다. 이를 자신의 뷰 모델이있는 사용자 정의 컨트롤로 분할 할 수 있습니다.

참고 :

  1. With MVVM, does each UI window have its own ViewModel?
  2. In MVVM, is every ViewModel coupled to just one Model?