Мост
Bridge
Назначение
Отделить абстракцию от ее реализации так, чтобы то и другое можно было изменять независимо.
Результаты
1. Реализация больше не имеет постоянной привязки к интерфейсу. Реализацию абстракции можно конфигурировать во время выполнения. Объект может даже динамически изменять свою реализацию.
2. Можно расширять независимо иерархии классов Abstraction и Implementor.
3. Можно скрыть детали реализации от клиентов, используя указатель типа
void *.
Структура
Реализация
//
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();
};