🕵️
Введение в паттерны
  • Введение в паттерны
  • Паттерны
    • Оглавление
    • Порождающие паттерны
      • Фабричный метод
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Абстрактная фабрика
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Прототип
        • Реализации на С++
        • Реализации на Kotlin
        • Реализации на Java
        • Возможные реализации для решения конкретных задач на С++
      • Строитель
        • Реализации на С++
        • Реализации на Kotlin
      • Одиночка
        • Реализации на C++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Пул объектов
        • Реализации на С++
    • Структурные паттерны
      • Адаптер
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач
      • Декоратор
        • Реализации на С++
        • Реализации на Kotlin
      • Компоновщик
        • Реализации на С++
      • Мост
        • Реализации на С++
      • Заместитель
        • Реализации на С++
        • Реализации на Kotlin
      • Фасад
        • Реализации на С++
      • Приспособленец
        • Реализации на С++
    • Поведенческие паттерны
      • Стратегия
        • Реализации на С++
        • Реализации на Kotlin
      • Команда
        • Реализации на С++
        • Реализации на Kotlin
      • Цепочка обязанностей
        • Реализации на С++
        • Реализации на Kotlin
      • Подписчик-издатель
        • Реализации на С++
        • Реализации на Kotlin
      • Посетитель
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
      • Посредник
        • Реализации на С++
        • Реализации на Kotlin
      • Шаблонный метод
        • Реализации на С++
      • Опекун
        • Реализации на С++
      • Итератор
        • Реализации на С++
        • Реализации на Kotlin
      • Свойство
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
  • Введение в идиомы
  • Идиомы
    • Оглавление
    • RAII
    • Type erasure
      • Контейнеры с type erasure
    • CRTP
    • Статический полиморфизм
    • Shrink to fit
    • Proxy
    • Erase remove
    • Decltype (auto)
    • Copy and swap
    • Safe bool
    • Scope guard
    • Addressof
Powered by GitBook
On this page
  • Назначение
  • Решаемые задачи
  • UML диаграмма
  • Преимущества
  • Недостатки
  • Связь с другими паттернами

Was this helpful?

  1. Паттерны
  2. Структурные паттерны

Мост

Bridge

PreviousРеализации на С++NextРеализации на С++

Last updated 1 year ago

Was this helpful?

Назначение

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

Решаемые задачи

  • возможность выбирать реализацию во время выполнения программы

Мост позволяет избежать постоянной привязки абстракции к реализации.

  • комбинирование разных абстракций и реализаций и изменение их независимо

  • избежание перекомпиляции клиентского кода при изменениях в реализации абстракции

  • полное сокрытие от клиентов реализации абстракции

  • разделение одной реализации между несколькими объектами и сокрытие деталей разделения от клиента

  • декомпозиция иерархии: позволяет управлять ростом и сложностью иерархии

Зачастую иерархию разделяют на две части: абстракцию и реализацию.

В некоторых случаях может потребоваться более чем две части для разделения иерархии на более гибкие и независимые компоненты. Количество частей зависит от конкретных требований и особенностей системы.

UML диаграмма

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

  • избавление от дублирования кода

Дублирование кода может возникать в случае, когда несколько реализаций содержат одинаковые методы. Данную проблему можно решить вынесением одинаковых методов на более высокий уровень абстракции. Однако такой подход вынуждает реализовывать вынесенные методы во всех остальных экземплярах реализации

  • позволяет иерархии не разрастаться

  • сокрытие деталей реализации от клиентов

  • возможность изменять реализацию во время выполнения программы

Недостатки

  • увеличение времени выполнения

  • тяжелый процесс реализации паттерна: введение дополнительного уровня абстракции между "реализацией" и "абстракцией"

Из-за дополнительных затрат на разработку паттерна и усложнения структуры кода появляется необходимость закладывать реализацию моста в систему на этапе проектирования

  • связь между абстрактными понятиями не всегда может быть выделена

Связь с другими паттернами

: паттерн абстрактная фабрика может создать и сконфигурировать мост

: для обеспечения совместной работы не связанных между собой классов прежде всего предназначен паттерн адаптер. Обычно он применяется в уже готовых системах. Мост же участвует в проекте с самого начала и призван поддерживать возможность независимого изменения абстракций и их реализаций.

: мост и компоновщик могут совместно использоваться для создания сложных структур, состоящих из связанных объектов.

: мост может быть комбинирован с декоратором для добавления дополнительной функциональности к объектам абстракции и реализации.

: мост может быть реализован с использованием стратегии. В этом случае, абстракция содержит ссылку на объект стратегии, который предоставляет конкретную реализацию. Стратегия может быть легко заменена другой, не нарушая интерфейса абстракции.

Абстрактная фабрика
Адаптер
Компоновщик
Декоратор
Стратегия
UML диаграмма паттерна "Мост"