Erich Gamma Ralph Johnson Richard Helm John Vlissides Addison-Wesley



Download 6,32 Mb.
Pdf ko'rish
bet228/273
Sana02.03.2022
Hajmi6,32 Mb.
#479589
1   ...   224   225   226   227   228   229   230   231   ...   273
Bog'liq
Priemioop

Паттерны поведения
Кстати, всегда желательно фиксировать, какие операции класса 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 (менеджер изменений). Он служит для мини-
мизации объема работы, необходимой для того чтобы наблюдатели смогли
отразить изменения субъекта. Например, если некоторая операция влечет
за собой изменения в нескольких независимых субъектах, то хотелось бы,
чтобы наблюдатели уведомлялись после того, как будут модифицированы
все
субъекты, дабы не ставить в известность одного и того же наблюдателя
несколько раз.



Download 6,32 Mb.

Do'stlaringiz bilan baham:
1   ...   224   225   226   227   228   229   230   231   ...   273




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish