Skip to content

Latest commit

 

History

History
 
 

bridge

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Структурные шаблоны / Мост

Мост (Bridge)

Содержание

Описание паттерна

Позволяет разделять абстракцию и реализацию, чтобы они могли изменяться независимо друг от друга.

Вместо того, чтобы создавать дерево классов с разной реализацией, Мост создает отдельную иерархию реализаций и подключает реализацию с помощью композиции (вместо наследования).

Абстракция здесь - это образное выражение. Она представляет собой слой управления, который не делает работу самостоятельно, а делегирует ее слою Реализации (платформе).

Реализация паттерна

Схема паттерна Мост

  • Implemention определяет общий интерфейс для всех конкретных реализаций (метод OperationImg())
  • Конкретные реализации ConcreteImplementions реализуют этот интерфейс по-своему
  • Abstraction - общий интерфейс для абстракции приложения
  • RefinedAbstraction - уточненная абстракция, реализующая этот интерфейс
  • Объект с интерфейсом Implementor с помощью композиции включается в объект с интерфейсом Abstraction
  • Клиент работает только с абстракциями.

Примеры

Использование

  • Если у вас есть монолитный класс, который содержит несколько различных реализаций какой-то функциональности (например, если класс может работать с разными системами баз данных).
  • Когда класс нужно расширять в двух независимых плоскостях - одну из таких плоскостей можно выделить в отдельную иерархию классов и ссылаться на нее.
  • Когда вы хотите, чтобы реализацию можно было бы изменять во время выполнения программы. (В этом Мост похож на Стратегию, но это не его основная задача).

Преимущества

  • Позволяет строить платформо-независимые программы.
  • Скрывает лишние или опасные детали реализации от клиентского кода.

Недостатки

  • Усложняется код программы.

Похожие паттерны

Все эти паттерны имеют похожие структуры: они построены на принципе композиции - делегирования работы другим объектам. Но все они решают разные проблемы.

Взаимодействие с другими паттернами

Способы реализации паттерна (вариации механизмов работы паттерна)

  • Абстрактная фабрика (Abstract Factory). Комбинация этих паттернов полезна, если некоторые абстракции могут работать не со всеми реализациями. Фабрика будет определять типы абстракций и реализаций.
  • Строитель (Builder). Строитель может быть оформлен в виде Моста, где Директор - абстракция, а Строители - реализации.

Источники