Erich Gamma Ralph Johnson Richard Helm John Vlissides Addison-Wesley



Download 6,32 Mb.
Pdf ko'rish
bet124/273
Sana02.03.2022
Hajmi6,32 Mb.
#479589
1   ...   120   121   122   123   124   125   126   127   ...   273
Bog'liq
Priemioop

Структурные паттерны
Клиенты должны иметь возможность создавать окно, не привязываясь к кон-
кретной реализации. Только сама реализация окна должна зависеть от плат-
формы, на которой работает приложение. Поэтому в клиентском коде не
может быть никаких упоминаний о платформах.
С помощью паттерна мост эти проблемы решаются. Абстракция окна и ее реа-
лизация помещаются в раздельные иерархии классов. Таким образом, существует
одна иерархия для интерфейсов окон (Window, IconWindow, TransientWindow)
и другая (с корнем Windowimp) - для платформенно-зависимых реализаций. Так,
подкласс XWindowImp предоставляет реализацию в системе X Window System.
Все операции подклассов Window реализованы в терминах абстрактных опе-
раций из интерфейса Windowimp. Это отделяет абстракцию окна от различных
ее платформенно-зависимых реализаций. Отношение между классами Window
и Windowimp мы будем называть
 мостом,
поскольку между абстракцией и реали-
зацией строится мост, и они могут изменяться независимо.
Применимость
Используйте паттерн мост, когда:
а хотите избежать постоянной привязки абстракции к реализации. Так, на-
пример, бывает, когда реализацию необходимо выбирать во время выполне-
ния программы;
а и абстракции, и реализации должны расширяться новыми подклассами.
В таком случае паттерн мост позволяет комбинировать разные абстрак-
ции и реализации и изменять их независимо;
о изменения в реализации абстракции не должны сказываться на клиентах,
то есть клиентский код не должен перекомпилироваться;


Паттерн Bridge
а
 (только для C++!)
вы хотите полностью скрыть от клиентов реализацию аб-
стракции. В C++ представление класса видимо через его интерфейс;
а число классов начинает быстро расти, как мы видели на первой диаграмме
из раздела «Мотивация». Это признак того, что иерархию следует разделить
на две части. Для таких иерархий классов Рамбо (Rumbaugh) использует
термин «вложенные обобщения» [RBP+91];
а вы хотите разделить одну реализацию между несколькими объектами (быть
может, применяя подсчет ссылок), и этот факт необходимо скрыть от клиента.
Простой пример - это разработанный Джеймсом Коплиеном класс String
[Сор92], в котором разные объекты могут разделять одно и то же представ-
ление строки (StringRep).
Структура
Участники

Download 6,32 Mb.

Do'stlaringiz bilan baham:
1   ...   120   121   122   123   124   125   126   127   ...   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