Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Гдд Паттерны поведения

Читайте также:
  1. F68 Другие расстройства зрелой личности и поведения у взрослых
  2. IV. ОТУЧЕНИЕ: КАК ИСПОЛЬЗОВАТЬ ПОДКРЕПЛЕНИЕ, ЧТОБЫ ИЗБАВИТЬСЯ ОТ НЕЖЕЛАТЕЛЬНОГО ПОВЕДЕНИЯ
  3. Анализ поведения объекта
  4. Анализ рынка —это изучение спроса и предложения в определенной товарной категории, исследование потребительского поведения, структуры и конъюнктуры рынка.
  5. Введение в паттерны проектирования
  6. Введение в паттерны проектирования
  7. Введение в паттерны проектирования
  8. Введение в паттерны проектирования
  9. Введение в паттерны проектирования
  10. Введение в паттерны проектирования

Кстати, всегда желательно фиксировать, какие операции класса Subject инициируют обновления;

а как избежать зависимости протокола обновления от наблюдателя: модели вытягивания и проталкивания. В реализациях паттерна наблюдатель субъ­ект довольно часто транслирует всем подписчикам дополнительную инфор­мацию о характере изменения. Она передается в виде аргумента операции Update, и объем ее меняется в широких диапазонах.

На одном полюсе находится так называемая модель проталкивания (push model), когда субъект посылает наблюдателям детальную информацию об изменении независимо от того, нужно ли им это. На другом - модель вытя­гивания (pull model), когда субъект не посылает ничего, кроме минимально­го уведомления, а наблюдатели запрашивают детали позднее. В модели вытягивания подчеркивается неинформированность субъекта о сво­их наблюдателях, а в модели проталкивания предполагается, что субъект вла­деет определенной информацией о потребностях наблюдателей. В случае применения модели проталкивания степень повторного их использования может снизиться, так как классы Sub j ect предполагают о классах Observer, которые не всегда могут быть верны. С другой стороны, модель вытягивания может оказаться неэффективной, ибо наблюдателям без помощи субъекта необходимо выяснять, что изменилось;

а явное специфицирование представляющих интерес модификаций Эффек­тивность обновления можно повысить, расширив интерфейс регистрации субъекта, то есть предоставив возможность при регистрации наблюдателя указать, какие события его интересуют. Когда событие происходит, субъект информирует лишь тех наблюдателей, которые проявили к нему интерес. Чтобы получать конкретное событие, наблюдатели присоединяются к сво­им субъектам следующим образом:

void Subject::Attach(Observer*, Aspects interest);

где interest определяет представляющее интерес событие. В момент по­сылки уведомления субъект передает своим наблюдателям изменившийся аспект в виде параметра операции Update. Например:

void Observer::Update(Subject*, Aspects interest);

а инкапсуляция сложной семантики обновления. Если отношения зависимос­ти между субъектами и наблюдателями становятся особенно сложными, то может потребоваться объект, инкапсулирующий эти отношения. Будем на­зывать его ChangeManager (менеджер изменений). Он служит для мини­мизации объема работы, необходимой для того чтобы наблюдатели смогли отразить изменения субъекта. Например, если некоторая операция влечет за собой изменения в нескольких независимых субъектах, то хотелось бы, чтобы наблюдатели уведомлялись после того, как будут модифицированы все субъекты, дабы не ставить в известность одного и того же наблюдателя несколько раз.


 



Дата добавления: 2015-09-11; просмотров: 85 | Поможем написать вашу работу | Нарушение авторских прав

Паттерны поведения | Паттерны поведения | Паттерны поведения | Virtual -FontDialogDirector(); | Паттерн Memento | Участники | Паттерны поведения | Пример кода | Паттерн Memento | Паттерн Observer |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав