VMa <- Ma, VMb -> Ma ... Versus ... VMa <- VMb -> Ma - PullRequest
0 голосов
/ 14 марта 2011

Опция 1: ViewModelA <- модель A, ViewModelB -> модель A
Опция 2: ViewModelA <- ViewModelB -> Модель A

* ModelA меняет свои свойства * только с 1010 * по ViewModelB , поэтому в Option2 не нужно реализовывать какой-либо механизм, чтобы информировать кого-либо в том виде, в котором он изменился.
* Option2 требуется решение для обмена сообщениями между двумя моделями представления, тогда как Option1 нет.

Что лучше, Option1 или Option2 ?

РЕДАКТИРОВАТЬ:
Я решил реализовать Option2 , поскольку хотел, чтобы класс ModelA был простым POCO.
Я также переименовал ViewModelB в ModelViewB .

ОТВЕТ:
Наконец-то реализовано ... Вариант1. искушение заключалось в том, что я мог ModelA быть простым (например, никого не уведомляя). Но, в конце концов, это усложнило приложение, поскольку это было отклонением от реализаций других классов. Лучше придерживаться одного правила (даже с некоторыми накладными расходами).

Классы messenger на самом деле являются вспомогательными классами, и не так сильно, как основной компонент шаблона, поэтому я держал решение более близко к шаблону (как также упоминали парни ниже).

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

Я бы всегда выбрал первый вариант.

Этот вариант следует за MVVM, а также за тем, что производит, а архитектура более понятна и понятна.

1 голос
/ 14 марта 2011

Если у вас нет Mediator, реализованного как часть вашей структуры MVVM (MVVM + M).Вариант 1 будет работать нормально.Это будет очень хорошее время, если вы добавите шаблон-посредник в свою структуру на будущее.

Пока прямой доступ к данным не осуществляется из представления, а все данные доступны через модель представления, может ли это бытьполучает или устанавливает, то это нормально.

...