桥接模式 C++——
时间: 2024-05-27 15:07:31 浏览: 182
桥接模式 C++ 实现
4星 · 用户满意度95%
桥接模式是一种结构型设计模式,它将抽象和实现分离,使它们可以独立地变化。桥接模式的核心思想是将一个大类或一组类分解成抽象和实现两个独立的维度,使它们可以独立地变化和扩展,同时通过桥接来将它们连接起来。
在C++中,桥接模式通常通过虚函数实现。抽象部分通过基类定义接口,而实现部分通过派生类实现具体的功能。通过将抽象部分的指针作为参数传递给实现部分的函数,就可以实现两个部分的连接。
下面是一个简单的桥接模式的C++示例:
```c++
class Implementor {
public:
virtual void operation() = 0;
virtual ~Implementor() {}
};
class ConcreteImplementorA : public Implementor {
public:
void operation() override {
// 具体的实现A
}
};
class ConcreteImplementorB : public Implementor {
public:
void operation() override {
// 具体的实现B
}
};
class Abstraction {
public:
Abstraction(Implementor* implementor) : m_implementor(implementor) {}
virtual void operation() = 0;
virtual ~Abstraction() {}
protected:
Implementor* m_implementor;
};
class RefinedAbstraction : public Abstraction {
public:
RefinedAbstraction(Implementor* implementor) : Abstraction(implementor) {}
void operation() override {
m_implementor->operation();
// 其他操作
}
};
int main() {
Implementor* implementorA = new ConcreteImplementorA();
Implementor* implementorB = new ConcreteImplementorB();
Abstraction* abstractionA = new RefinedAbstraction(implementorA);
Abstraction* abstractionB = new RefinedAbstraction(implementorB);
abstractionA->operation();
abstractionB->operation();
delete abstractionA;
delete abstractionB;
delete implementorA;
delete implementorB;
return 0;
}
```
在上面的示例中,Implementor是实现部分的抽象基类,ConcreteImplementorA和ConcreteImplementorB是具体的实现类。Abstraction是抽象部分的基类,RefinedAbstraction是抽象部分的具体实现类。在main函数中,我们创建了不同的Implementor和Abstraction对象,并通过它们来完成不同的操作。
阅读全文