Модели статического вида / Модели презентаций - PullRequest
3 голосов
/ 09 января 2010

Было бы неправильно делать все мои модели представления / модели представления статическими классами, чтобы, если любой другой View Presenter хотел изменить модель представления, отличную от своей, он мог легко получить ссылку на нее?

Если это неправильный подход, как бы вы его достигли?

Ответы [ 2 ]

1 голос
/ 09 января 2010

Если вы хотите сделать его статичным, вам лучше реализовать правильный шаблон Singleton. Вам будет крайне сложно протестировать все классы, которые используют ваши статические модели, так как вы не сможете использовать любые методы инверсии зависимости.

Кроме того, помните о параллелизме, если у вас есть только 1 класс - вам нужно заблокировать почти все Не хорошо.

Наконец, вы можете рассмотреть возможность использования шаблона Factory. Легко доступен, но создаст новый объект модели для каждого класса, который хочет его использовать. Проблема параллелизма (в основном) решена.

0 голосов
/ 09 января 2010

Статические ViewModels звучат как ужасная идея (я считаю статический зло общим принципом). Это будет означать, что вы не можете иметь более одного экземпляра ViewModel. Я могу вспомнить множество примеров пользовательского интерфейса, в которых есть несколько экземпляров одного и того же типа представления, но это было бы невозможно со статическими моделями представления.

Если вы хотите включить связь между представлениями, Публикация / подписка (события) - гораздо лучший вариант.

Помните, что когда мы говорим о моделях ViewModels / Presentaion, они обычно представляют базовые доменные объекты. Если у вас есть несколько представлений, которые отображают части одного и того же объекта домена, вы можете заставить объект домена вызывать события, когда он изменяет состояние, и любой ViewModel, отображающий данные из этого объекта домена, может подписаться на эти события и соответствующим образом обновить свои элементы управления. *

...