Шаблон MVC и Observer - PullRequest
       33

Шаблон MVC и Observer

1 голос
/ 25 января 2009

У меня проблемы с реализацией шаблона Observer в моем проекте. Проект должен быть сделан как MVC в C #, как приложение для Windows.
В моей модели предметной области у меня есть, например, класс страны и репозиторий страны. У меня есть Контроллер страны и представления для просмотра всех стран (список в форме), добавления новой страны и редактирования существующей страны.
Я не знаю, сколько мнений нужно знать об изменениях, связанных с изменением страны. Дело в том, что я должен использовать шаблон Observer. И в Интернете я могу найти только те примеры, когда «Тема» - «Страна», а «Обозреватель» - это форма, которая редактирует страну, и все примеры находятся в консольном приложении.

Мне нужно, чтобы все мои формы, в которых есть списки стран, знали о добавлении новой страны, а не только о редактировании существующих. Как я должен это сделать, я должен сделать хранилище Субъектом?

Ответы [ 3 ]

1 голос
/ 25 января 2009

В C # (или .NET в целом) вы можете использовать события и делегаты, которые являются специальными реализациями наблюдателя / монитора / слушателя.

Я не знаю о DDD, но я бы добавил событие «NewCountryAdded» или «CountryListChanged» или что-то в этом роде.

1 голос
/ 25 января 2009

Вы можете создать задачу «ManageCountry», которая позволит вам редактировать / добавлять страны. Эта задача может иметь событие CountryChanged, на которое могут подписаться другие представления.

Когда вы изменяете страну или создаете новую страну, вы поднимаете событие, и подписчики могут реагировать на него. Вам просто нужно убедиться, что событие, которое вы вызываете, использует некоторые пользовательские EventArgs, чтобы вы могли передать объект Country, который был изменен, обработчику событий.

Что вы используете для реализации приложения MVC? Используете ли вы какие-то рамки для этого?

0 голосов
/ 25 января 2009

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

...