Мост
Bridge
Назначение
Мост (Bridge) - структурный паттерн, предназначенный для отделения абстракции от ее реализации так, чтобы была возможность изменять их независимо друг от друга.
Решаемые задачи
возможность выбирать реализацию во время выполнения программы
Мост позволяет избежать постоянной привязки абстракции к реализации.
комбинирование разных абстракций и реализаций и изменение их независимо
избежание перекомпиляции клиентского кода при изменениях в реализации абстракции
полное сокрытие от клиентов реализации абстракции
разделение одной реализации между несколькими объектами и сокрытие деталей разделения от клиента
декомпозиция иерархии: позволяет управлять ростом и сложностью иерархии
UML диаграмма

Преимущества
избавление от дублирования кода
позволяет иерархии не разрастаться
сокрытие деталей реализации от клиентов
возможность изменять реализацию во время выполнения программы
Недостатки
увеличение времени выполнения
тяжелый процесс реализации паттерна: введение дополнительного уровня абстракции между "реализацией" и "абстракцией"
Из-за дополнительных затрат на разработку паттерна и усложнения структуры кода появляется необходимость закладывать реализацию моста в систему на этапе проектирования
связь между абстрактными понятиями не всегда может быть выделена
Связь с другими паттернами
Абстрактная фабрика: паттерн абстрактная фабрика может создать и сконфигурировать мост
Адаптер: для обеспечения совместной работы не связанных между собой классов прежде всего предназначен паттерн адаптер. Обычно он применяется в уже готовых системах. Мост же участвует в проекте с самого начала и призван поддерживать возможность независимого изменения абстракций и их реализаций.
Компоновщик: мост и компоновщик могут совместно использоваться для создания сложных структур, состоящих из связанных объектов.
Декоратор: мост может быть комбинирован с декоратором для добавления дополнительной функциональности к объектам абстракции и реализации.
Стратегия: мост может быть реализован с использованием стратегии. В этом случае, абстракция содержит ссылку на объект стратегии, который предоставляет конкретную реализацию. Стратегия может быть легко заменена другой, не нарушая интерфейса абстракции.
Last updated
Was this helpful?