boxmoe_header_banner_img

Hello! 欢迎来到悠悠畅享网!

文章导读

C++桥接模式接口与实现类设计方法


avatar
作者 2025年9月14日 12

桥接模式通过抽象与实现分离实现多维度扩展,C++中用继承和组合解耦,定义Abstraction类持Implementor指针,构造时绑定具体实现,业务逻辑调用底层操作。

C++桥接模式接口与实现类设计方法

桥接模式的核心是将抽象部分与实现部分分离,使它们可以独立变化。在C++中,通过类继承和组合的方式实现这种解耦,特别适合多维度扩展的场景。

定义抽象接口类(Abstraction)

抽象类不直接实现功能,而是持有对实现接口的引用,提供高层操作。

关键点:

  • 包含指向实现接口的指针或引用
  • 构造函数接受实现类对象,支持运行时绑定
  • 定义业务逻辑接口,调用实现层完成具体操作

 class Implementor { public:     virtual ~Implementor() = default;     virtual void operationImpl() = 0; }; <p>class Abstraction { protected: Implementor<em> impl; public: Abstraction(Implementor</em> i) : impl(i) {} virtual ~Abstraction() = default; virtual void operation() = 0; };</p>

设计具体实现类(Concrete Implementor)

实现底层细节,供抽象类调用。每个子类提供不同的实现方式。

立即学习C++免费学习笔记(深入)”;

建议做法:

C++桥接模式接口与实现类设计方法

Article Forge

行业文案AI写作软件,可自动为特定主题或行业生成内容

C++桥接模式接口与实现类设计方法22

查看详情 C++桥接模式接口与实现类设计方法

  • 从Implementor派生,重写虚函数
  • 封装平台相关、算法差异或设备驱动等细节
  • 可配合工厂模式动态创建

 class ConcreteImplementorA : public Implementor { public:     void operationImpl() override {         std::cout << "Implementation An";     } }; <p>class ConcreteImplementorB : public Implementor { public: void operationImpl() override { std::cout << "Implementation Bn"; } };</p>

扩展抽象部分(Refined Abstraction)

在抽象层添加新行为或修饰原有接口,不影响实现结构。

注意事项:

  • 继承Abstraction基类
  • 复用impl指针调用底层实现
  • 可引入状态或配置控制行为分支

 class RefinedAbstraction : public Abstraction { public:     RefinedAbstraction(Implementor* i) : Abstraction(i) {} <pre class='brush:php;toolbar:false;'>void operation() override {     // 可加入前置处理     impl->operationImpl();     // 可加入后置处理 }

};

使用时,根据需求组合不同的抽象和实现:

 ConcreteImplementorA implA; RefinedAbstraction abs(&implA); abs.operation(); // 输出: Implementation A 

基本上就这些。重点在于把“做什么”和“怎么做”分开,避免类爆炸。只要接口稳定,两边就能独立演化。



评论(已关闭)

评论已关闭