printСтруктурирующие паттерны

printМост

Bridge

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

Результаты
1. Реализация больше не имеет постоянной привязки к интерфейсу. Реализацию абстракции можно конфигурировать во время выполнения. Объект может даже динамически изменять свою реализацию.
2. Можно расширять независимо иерархии классов Abstraction и Implementor.
3. Можно скрыть детали реализации от клиентов, используя указатель типа void *.

Структура
14681.png

Реализация
// Инструмент определяет интерфейс, содержащий примитивные операции
class Implementator {
public:
  virtual void Operation()=0;
};
// Конкретный инструмент определяет реализацию примитивных операций
class Implementator1 : public Implementator {
public:
  void Operation();
};
// Абстракция определяет интерфейс и реализацию по умолчанию для высокоуровневых операций
class Abstraction {
protected:
  Implementator *a;
public:
  virtual void Request() { a->Operation(); }
};
// Уточненная абстракция расширяет интерфейс
class Abstraction1 : public Abstraction {
public:
  void Action();
};
loading