|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.04.2012, 15:43 | #1 |
Пользователь
Регистрация: 10.07.2010
Сообщений: 37
|
Использование паттерна observer
Добрый день! Не могу решить такую проблему нужно из класса DataProviderColleague убрать жёсткую связь с классом Mediator используя
паттерн Observer Вот код реализации: Код:
|
21.04.2012, 20:13 | #2 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Нужно сделать так, чтобы DataProviderColleague вообще не знал о существовании Mediator. Для этого он не должен явно вызывать mediator.DataChanged(), а должен предоставлять событие на которое медиатор должен подписываться самостоятельно. Для этого нужно:
1) добавить в DataProviderColleague событие; например, public event EventHandler DataChanged (но вместо EventHandler можно самостоятельно определить тип делегата, чтобы он ещё передавал какие-нибудь полезные данные); 2) метод DataProviderColleague.ChangeData() можно убрать вообще; вместо этого в тех местах, где изменяются данные, вызвать событие DataChanged (this, EventArgs.Empty) (не забыв проверить DataChanged на null, на случай, если никто ещё не подписан); 3) медиатор в своём конструкторе должен подписываться на событие: c1.DataChanged += DataChanged, а метод Mediator.DataChanged по своей сигнатуре (т. е по типу аргументов и возвращаемого значения) должен соответствовать событию EventHandler: public void DataChanged (object sender, EventArgs e). Последний раз редактировалось ds.Dante; 21.04.2012 в 20:38. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Использование БД | glazik | БД в Delphi | 13 | 22.02.2012 09:14 |
Реализация паттерна Singleton в случае наследование | newkobra | Общие вопросы C/C++ | 6 | 05.11.2011 22:30 |
Использование (...) в с++ | Byurrer | Общие вопросы C/C++ | 12 | 06.04.2011 23:04 |
патттерн Observer(Непонятна часть кода) С++ | sasharu9 | Помощь студентам | 1 | 09.12.2010 03:58 |
Использование while и while do | prikolist | Общие вопросы C/C++ | 20 | 06.04.2009 18:40 |