Erich Gamma Ralph Johnson Richard Helm John Vlissides Addison-Wesley



Download 6,32 Mb.
Pdf ko'rish
bet119/273
Sana02.03.2022
Hajmi6,32 Mb.
#479589
1   ...   115   116   117   118   119   120   121   122   ...   273
Bog'liq
Priemioop

Структурные паттерны
в Unidraw это StateVariable, а в QOCA - ConstraintVariable. Чтобы
заставить Unidraw работать совместно с QOCA, ConstraintVariable
нужно адаптировать к StateVariable. А для того чтобы решения QOCA
распространялись на Unidraw, StateVariable следует адаптировать
к ConstraintVariable.
Здесь применен двусторонний адаптер класса ConstraintStateVariable,
который является подклассом одновременно StateVariable и Const-
raintVariable и адаптирует оба интерфейса друг к другу. Множествен-
ное наследование в данном случае вполне приемлемо, поскольку интерфей-
сы адаптированных классов существенно различаются. Двусторонний
адаптер класса соответствует интерфейсам каждого из адаптируемых клас-
сов и может работать в любой системе.
Реализация
Хотя реализация адаптера обычно не вызывает затруднений, кое о чем все же
стоит помнить:
а
 реализация адаптеров классов в C++. В
C++ реализация адаптера класса
Adapter открыто наследует от класса Target и закрыто - от Adaptee.
Таким образом, Adapter должен быть подтипом Target, но не Adaptee;
а
 сменные адаптеры.
Рассмотрим три способа реализации сменных адапте-
ров для описанного выше виджета TreeDisplay, который может автома-
тически отображать иерархические структуры.
Первый шаг, общий для всех трех реализаций, - найти «узкий» интерфейс
для Adaptee, то есть наименьшее подмножество операций, позволяющее
выполнить адаптацию. «Узкий» интерфейс, состоящий всего из пары ите-
раций, легче адаптировать, чем интерфейс из нескольких десятков опера-
ций. Для TreeDi splay адаптации подлежит любая иерархическая струк-
тура. Минимальный интерфейс мог бы включать всего две операции: одна
определяет графическое представление узла в иерархической структуре,
другая - доступ к потомкам узла.
«Узкий» интерфейс приводит к трем подходам к реализации:
-
 использование абстрактных операций.
Определим в классе TreeDi splay
абстрактные операции, которые соответствуют «узкому» интерфейсу клас-
са Adaptee. Подклассы должны реализовывать эти абстрактные операции


Паттерн Adapter
и адаптировать иерархически структурированный объект. Например,
подкласс DirectoryTreeDisplay при их реализации будет осуществ-
лять доступ к структуре каталогов файловой системы.
DirectoryTreeDi splay специализирует узкий интерфейс таким обра-
зом, чтобы он мог отображать структуру каталогов, составленную из объек-
тов FileSystemEntity;
использование объектов-уполномоченных.
При таком подходе TreeDisplay
переадресует запросы на доступ к иерархической структуре объекту-
уполномоченному. TreeDisplay может реализовывать различные стра-
тегии адаптации, подставляя разных уполномоченных.
Например, предположим, что существует класс DirectoryBrowser, ко-
торый использует TreeDisplay. DirectoryBrowser может быть упол-
номоченным для адаптации TreeDisplay к иерархической структуре
каталогов. В динамически типизированных языках вроде Smalltalk или
Objective С такой подход требует интерфейса для регистрации уполно-
моченного в адаптере. Тогда TreeDisplay просто переадресует запросы
уполномоченному. В системе NEXTSTEP [Add94] этот подход активно
используется для уменьшения числа подклассов.



Download 6,32 Mb.

Do'stlaringiz bilan baham:
1   ...   115   116   117   118   119   120   121   122   ...   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