Паттерны проектирования: Мост (Bridge)
Мост — структурный шаблон, который применяется в проектировании ПО для разделения абстракции и реализации таким образом, чтобы они могли меняться независимо друг от друга. Этот шаблон использует инкапсуляцию и агрегирование, а также, если требуется разделение ответственности между классами, может использовать наследование.
Давайте представим, что у нас есть веб-сайт с разными страницами, а нам надо разрешить пользователям менять тему этих страниц. Что делать? Вряд ли будет разумно создавать множественные копии для каждой веб-страницы и для каждой темы. Вопрос можно решить благодаря шаблону Мост.
Если говорить простыми словами, то при использовании шаблона Мост обеспечивается предпочтение композиции над наследованием. В данном случае происходит передача деталей реализации из одной иерархии в другой объект с отдельной иерархией.
Лучше всего, конечно, посмотреть, как это будет выглядеть в коде вышеописанного примера с веб-страницами. Итак, у нас существует иерархия WebPage:
А также отдельная иерархия Theme:
Теперь смотрим применение в коде:
Также вам может быть интересен пример реализации шаблона «Мост» на языке программирования Java: https://github.com/iluwatar/java-design-patterns/tree/master/bridge.
По материалам статьи «Design Patterns for Humans» — https://github.com/kamranahmedse/design-patterns-for-humans.