Паттерн Мост / Bridge должен выглядеть примерно так? Привет, нашел в интернете реализацию паттерна мост, она выглядит следующим образом, но есть вопрос правильная ли она?class Implementor;
class Abstraction {
public:
virtual ~Abstraction() {};
virtual void Operation() = 0;
protected:
Implementor* implement;
};
class RefinedAbstraction : public Abstraction {
public:
void Operation() {
//...код
}
};
class Implementor {
public:
virtual ~Implementor() {};
virtual void OperationImp() = 0;
};
class ConcreteImplementor1 : public Implementor {
public:
void OperationImp() {
//...код
}
};
class ConcreteImplementor2 {
public:
void OperationImp() {
//...код
}
};

21 Авг 2019 в 06:57
211 +1
0
Ответы
1

Ваш пример немного неполный и содержит ошибку. Во-первых, в классе ConcreteImplementor2 не указано наследование от класса Implementor. Во-вторых, в классе RefinedAbstraction метод Operation должен вызывать метод OperationImp у объекта implement, который указывает на реализацию операции в классе ConcreteImplementor1 или ConcreteImplementor2.

Исправленный пример:

class Implementor {
public:
virtual ~Implementor() {};
virtual void OperationImp() = 0;
};
class Abstraction {
public:
virtual ~Abstraction() {};
virtual void Operation() = 0;
protected:
Implementor* implement;
};
class RefinedAbstraction : public Abstraction {
public:
void Operation() {
implement->OperationImp();
}
};
class ConcreteImplementor1 : public Implementor {
public:
void OperationImp() {
//... код реализации операции
}
};
class ConcreteImplementor2 : public Implementor {
public:
void OperationImp() {
//... код реализации операции
}
};

Этот исправленный пример демонстрирует правильную структуру для паттерна Мост (Bridge).

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир