Паттерн Bridge решает проблему отделения абстракции от ее реализации, чтобы они могли изменяться независимо друг от друга. Шаблон Мост относится к группе структурных паттернов в книге от банды четырех.
Реализация
Есть 3 основных составляющих в этом шаблоне проектирования:
- Абстракция — это класс или интерфейс, который будет потом реализован.
- Реализация — это интерфейс с конкретными методами, это контракт который через композицию содержится в абстракции
- Конкретны реализаторы — это конкретные классы, реализующие интерфейс реализации.
Особенности реализации паттерна Bridge.
- Абстракция знает о контракте интерфейса Реализации, знает методы которыми Абстракция может пользоваться.
- Абстракция с помощь композиции содержит Конкретный Реализатор. Таких реализаторов может быть сколь угодно много, и для добавления новой логики достаточно создать новый Конкретный Реализатор и передать его в Абстракцию.
- Здесь нам помогает полиморфизм, и заодно соблюдаем принцип Open/Closed из SOLID.
Таким образом имеем, что цель паттерна мост состоит в том, чтобы абстракции и реализации были очень слабо связаны. Но так можно сказать про многие паттерны, и какая тогда разница? Все дело в нюансах, а конкретно какие намерения достигаются тем или иным шаблоном проектирования. Тогда все станет понятнее, так например назначение шаблона адаптер — действовать как посредник между двумя несовместимыми классами. Целью шаблона стратегия является инкапсуляция различных алгоритмов и гибко их подменять в зависимости от контекста.
У кого есть хорошие примеры из ваших приложений для шаблона мост,- оставляйте в комментариях )