桥接(Bridge)是一种结构型设计模式,用于分离抽象接口及其实现。在C++中,可以通过以下方式实现桥接模式:
#include <iostream>
// 抽象类接口
class AbstractionImp {
public:
virtual void operation() = 0;
virtual ~AbstractionImp() {}
};
// 实现类
class ConcreteImpA : public AbstractionImp {
public:
void operation() override {
std::cout << "ConcreteImpA operation." << std::endl;
}
};
class ConcreteImpB : public AbstractionImp {
public:
void operation() override {
std::cout << "ConcreteImpB operation." << std::endl;
}
};
// 抽象类
class Abstraction {
protected:
AbstractionImp* imp;
public:
Abstraction(AbstractionImp* imp) : imp(imp) {}
virtual ~Abstraction() { delete imp; }
virtual void operation() {
imp->operation();
}
};
// 扩展抽象类
class RefinedAbstraction : public Abstraction {
public:
RefinedAbstraction(AbstractionImp* imp) : Abstraction(imp) {}
void extraOperation() {
// 可以添加额外的操作
std::cout << "RefinedAbstraction operation." << std::endl;
}
};
int main() {
AbstractionImp* impA = new ConcreteImpA();
AbstractionImp* impB = new ConcreteImpB();
Abstraction* abstractionA = new RefinedAbstraction(impA);
Abstraction* abstractionB = new RefinedAbstraction(impB);
abstractionA->operation();
abstractionB->operation();
delete abstractionA;
delete abstractionB;
return 0;
}