![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Вот теперь мне кажется что мы её "разобрали"... Возьмёмся за "наблюдателя"? ![]() Это сообщение отредактировал(а) Леопольд - 25.6.2009, 10:59 -------------------- вопросов больше чем ответов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Патерн Наблюдатель с технической точки зрения это разновидность регистрации делегируемого интерфейса для установления обратной связи, при которой полагается, что наблюдаемый не зависит от реакции наблюдателя, т.е интерфейс не возвращает (прямо или косвенно) результат вызова. |
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Но наблюдатели зависят от наблюдаемого, что логично... Следовательно, это позволяет при изменениях некоего объекта (наблюдаемого) как-то реагировать всем зарегестрированным наблюдателям, например, синхронизировать состояния. Думаю можно "подписаться" на разные события. Насколько мне известно, этот паттерн часто используют в GUI библиотеках для обработки различных ивентов. Что-то ещё он может? Это сообщение отредактировал(а) Леопольд - 25.6.2009, 11:38 -------------------- вопросов больше чем ответов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Наблюдатель может только наблюдать и подписываться (сам или кем то) на наблюдения (и соответсвенно отписываться от них). Остальное выходит за рамки наблюдателя ![]() |
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
В общем, "правильнее" было бы назвать этот паттерн "прирождённый стукач", потому что он больше ничего не может ![]() Получается он бесполезен сам по себе. Но в совокупности с другими паттернами он явно может принести пользу. Я например вижу что можно с его помощью оповещать всех подписчиков наблюдателя об изменении наблюдаемого. Т.е. наблюдатель + делегат (или прокси). Какие-то ещё комбинации? -------------------- вопросов больше чем ответов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не получается. ![]() суть не в том что один объект сообщает о своем состоянии, а в том что другой может получить эти сообщения. Объект наблюдатель может все что ему захочется, но эти действия не подпадают под паттерн наблюдатель.
наблюдатель (объект, а не паттерн) и является подписчиком. ![]() делегат фактически является подпатерном наблюдателя. Точнее сказать паттерн наблюдатель описывает одно из применений делегатов. Прокси прямого отношения к рассматриваемому патерну не имеет. Это сообщение отредактировал(а) mes - 25.6.2009, 17:30 |
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Предлагаю приложить его к игре с героями.
Предположим в игре есть ресурсы, за счёт которых можно производить новых героев. Предположим, что эти ресурсы представляют из себя класс. Количество ресурсов можно увеличивать. Также имеются фабрики(а) героев. Есть заданная пользователем очередь "создания" героев. Разумно ли применить паттерн "наблюдатель" для того что-бы оповещать очередь создания о том что ресурсов достаточно для создания следующего в очереди героя? Это сообщение отредактировал(а) Леопольд - 28.6.2009, 22:45 -------------------- вопросов больше чем ответов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |