桥接模式是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们可以独立地变化。这种模式通过提供一个桥接接口来实现这种分离,使得抽象部分和实现部分可以在运行时独立地进行修改。
桥接模式主要由两个部分组成:抽象部分和实现部分。
- 抽象部分(Abstraction):定义了抽象类或接口,并包含一个对实现部分的引用。
- 实现部分(Implementor):定义了实现类或接口,与抽象部分相互配合,完成功能。
#include <iostream>// 实现部分接口
class Implementor {
public:virtual void operationImpl() const = 0;
};// 具体实现部分A
class ConcreteImplementorA : public Implementor {
public:void operationImpl() const override {std::cout << "Concrete Implementor A operation" << std::endl;}
};// 具体实现部分B
class ConcreteImplementorB : public Implementor {
public:void operationImpl() const override {std::cout << "Concrete Implementor B operation" << std::endl;}
};// 抽象部分
class Abstraction {
protected:Implementor* implementor_;public:Abstraction(Implementor* implementor) : implementor_(implementor) {}virtual void operation() const = 0;
};// 具体抽象部分
class RefinedAbstraction : public Abstraction {
public:RefinedAbstraction(Implementor* implementor) : Abstraction(implementor) {}void operation() const override {std::cout << "Refined Abstraction operation" << std::endl;implementor_->operationImpl();}
};int main() {// 创建具体实现部分对象ConcreteImplementorA implementorA;ConcreteImplementorB implementorB;// 使用不同的实现部分创建具体抽象部分对象RefinedAbstraction abstractionA(&implementorA);RefinedAbstraction abstractionB(&implementorB);// 调用抽象部分的操作方法abstractionA.operation();abstractionB.operation();return 0;
}/*
在这个示例中,Implementor 是实现部分的接口,定义了实现部分的操作方法。
ConcreteImplementorA 和 ConcreteImplementorB 是具体实现部分,
分别实现了 Implementor 接口。Abstraction 是抽象部分的接口,包含一个对实现部分的引用。
RefinedAbstraction 是具体抽象部分,实现了抽象部分的操作方法,并调用了实现部分的方法。在 main() 函数中,我们创建了具体的实现部分对象和抽象部分对象,并调用了抽象部分的操作方法,
实现了桥接模式的功能。
*/
觉得有帮助的话,打赏一下呗。。