Читайте также: |
|
Используйте паттерн мост, когда:
а хотите избежать постоянной привязки абстракции к реализации. Так, например, бывает, когда реализацию необходимо выбирать во время выполнения программы;
а и абстракции, и реализации должны расширяться новыми подклассами. В таком случае паттерн мост позволяет комбинировать разные абстракции и реализации и изменять их независимо;
о изменения в реализации абстракции не должны сказываться на клиентах, то есть клиентский код не должен перекомпилироваться;
Паттерн Bridge
а (только для C++!) вы хотите полностью скрыть от клиентов реализацию абстракции. В C++ представление класса видимо через его интерфейс;
а число классов начинает быстро расти, как мы видели на первой диаграмме из раздела «Мотивация». Это признак того, что иерархию следует разделить на две части. Для таких иерархий классов Рамбо (Rumbaugh) использует термин «вложенные обобщения» [RBP+91];
а вы хотите разделить одну реализацию между несколькими объектами (быть может, применяя подсчет ссылок), и этот факт необходимо скрыть от клиента. Простой пример - это разработанный Джеймсом Коплиеном класс String [Сор92], в котором разные объекты могут разделять одно и то же представление строки (StringRep).
Структура
Участники
a Abstraction (Window) - абстракция:
- определяет интерфейс абстракции;
- хранит ссылку на объект типа Implement or;
a RefinedAbstraction (iconWindow) - уточненная абстракция:
- расширяет интерфейс, определенный абстракцией Abstraction;
a Implementor (Windowlmp) - реализатор:
- определяет интерфейс для классов реализации. Он не обязан точно соот
ветствовать интерфейсу класса Abstraction. На самом деле оба ин
терфейса могут быть совершенно различны. Обычно интерфейс класса
Implementor предоставляет только примитивные операции, а класс
Abstraction определяет операции более высокого уровня, базирующие
ся на этих примитивах;
a Concretelmplementor (XWindowlmp, PMWindowlmp) - конкретный реализатор:
- содержит конкретную реализацию интерфейса класса Implementor.
Структурные паттерны
Отношения
Объект Abstraction перенаправляет своему объекту Implementor запросы клиента.
Дата добавления: 2015-09-11; просмотров: 72 | Поможем написать вашу работу | Нарушение авторских прав |