Шаблон проектирования моста с примером

Dec 03 2022
Что такое шаблон проектирования моста? Согласно определениям GOF, шаблон моста «отделяет абстракцию от ее реализации, так что они могут изменяться независимо друг от друга». В шаблоне проектирования моста есть два уровня. Первый уровень — это уровень абстракции, а второй уровень — это уровень реализации.

Что такое шаблон проектирования моста?

Согласно определениям GOF, шаблон моста «отделяет абстракцию от ее реализации, чтобы они могли меняться независимо друг от друга».

В шаблоне проектирования моста есть два слоя.

Первый уровень — это уровень абстракции.

а второй уровень — это уровень реализации.

Если я внесу какие-либо изменения на уровне реализации, это не повлияет на уровень абстракции.

Точно так же, если я внесу какие-либо изменения в уровень абстракции, это не повлияет на уровень реализации.

Диаграмма классов шаблона проектирования моста:

Как показано на предыдущей диаграмме, шаблон проектирования моста состоит из четырех компонентов. Они следующие:

Implementer :
это интерфейс, который должен быть реализован всеми классами реализации. Этот интерфейс будет действовать как мост между классом абстракции и классом реализации.

ConcreteImplementationA / ConcreteImplementaionB :
это классы, реализующие Implementor. Эти классы содержат конкретную реализацию всех операций.

Абстракция :

Это будет абстрактный класс. который определяет методы для вызова клиентского кода. этот абстрактный класс содержит защищенную переменную реализации, которая содержит ссылку на объект, выполняющий реализацию.

ConcreteAbstraction/RefinedAbstraction :
это классы, унаследованные от абстрактного класса Abstraction.

Понимание шаблона проектирования моста на примере:

Предположим, мы хотим (производить и собирать) новые автомобили следующих двух типов (BMW или Mercedes).

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

Таким образом, диаграмма классов для нашего примера будет выглядеть следующим образом:

Реализация :

Когда нам нужно использовать шаблон проектирования моста в приложениях реального времени?

Нам нужно использовать шаблон проектирования моста в приложениях реального времени, когда:
1- Мы хотим скрыть детали реализации от клиента.
2. Мы хотим, чтобы выбор или переключение реализации происходило во время выполнения, а не во время разработки.
3. Мы хотим, чтобы классы абстракции и реализации были расширяемыми подклассами.
4. Мы хотим избежать тесной связи между абстракцией и ее реализацией.
5- Изменения в реализации абстракции не должны влиять на клиентов.

Ссылка на полный код на Github:

StructuralDesignPatterns/4-BridgeDP