2010-11-04 2 views
1

Ну, в шаблоне MVVM хорошая практика заключается в том, что две модели не должны знать или разговаривать друг с другом. Это означает, что вы не должны создавать объект одной модели в другом, а затем регистрироваться для события или выполнять подобные вещи.Почему две модели не должны разговаривать с каждым из них

Но почему, что не так, если две модели знают друг друга. Я пишу код и что произойдет, если обе модели узнают друг друга.

+0

Я думаю, что это плохо для свободной связи! – cordellcp3

ответ

2

Часто модели идеально подходят для взаимодействия друг с другом. Родительские/дочерние отношения в представлении включают модель родительского представления, содержащую коллекцию моделей просмотра детей. Существует ряд обстоятельств, в которых, например, доступность команд в родительском представлении зависит от состояния его дочерних элементов. Иногда бывает целесообразно делегировать это отдельному классу контроллера, но также часто не стоит прилагать усилий для этого.

Это действительно зависит от общей сложности вашего приложения. Иногда такие усилия необходимы; иногда это просто золочение.

+0

Абсолютно, но как только вы не пройдете весь свиньи с разделением объектов, вы не сможете автоматизировать их тестирование (что является главной причиной MVVM в первую очередь). Cheers –

+0

Как просматривать модель, взаимодействующую с другим рендерингом, один из них является неустойчивым? –

4

Если вы собираетесь обойти MVVM в любом случае вы хотите иметь веские причины (в противном случае вы можете также просто написать его в качестве традиционного кода за и сэкономить набрав) :)

Существует несколько преимуществ использования MVVM, которые в основном предназначены для очень быстрого соединения, модульного тестирования и повторного использования.

Основной принцип слабой связи идет что-то вроде этого:

  • взгляд знает, как отображать данные в определенной форме, но понятия не имеет, где данные поступают из.
  • ViewModel предоставляет определенную форму данных и настроек, , что представления могут использовать, но не имеют представления, кто его отображает.
  • Модель знает, как хранить общие данные, но не знаю, кто ее потребляет
  • Контроллер (отсутствует в большинстве объяснений MVVM) решает, какие данные извлекать, какие данные отображать и где их отображать. Именно здесь принадлежит принятие решений.

Если вам требуются, чтобы ваши модели ViewModels знали друг о друге, то, скорее всего, отсутствует объект Controller, который управляет вашими 2 ViewModels и связанными с ними моделями/представлениями.

Если вы можете предоставить более подробную информацию о том, почему ваши модели в настоящее время связаны, я могу предложить альтернативу.

Смежные вопросы