当前位置: 首页 > news >正文

设计模式:桥接器模式(C++实现)

桥接器模式(Bridge Pattern)是一种结构设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。桥接器模式通常用于需要在多个维度上扩展和变化的情况下,将抽象和实现解耦。
以下是一个简单的C++桥接器模式的示例:

#include <iostream>// 实现接口
class Implementor
{
public:virtual void operationImpl() = 0;
};// 具体实现类A
class ConcreteImplementorA : public Implementor
{
public:void operationImpl() override{std::cout << "Concrete Implementor A operation" << std::endl;}
};// 具体实现类B
class ConcreteImplementorB : public Implementor
{
public:void operationImpl() override{std::cout << "Concrete Implementor B operation" << std::endl;}
};// 抽象类
class Abstraction
{
protected:Implementor *implementor;public:Abstraction(Implementor *implementor) : implementor(implementor) {}virtual void operation() = 0;
};// 扩展抽象类
class RefinedAbstraction : public Abstraction
{
private:std::string type;
public:RefinedAbstraction(Implementor *implementor, std::string type) : Abstraction(implementor), type(type) {}void operation() override{std::cout << "type: " << type << " ";implementor->operationImpl();}
};int main()
{Implementor *implementorA = new ConcreteImplementorA();Abstraction *abstractionA = new RefinedAbstraction(implementorA, "A");abstractionA->operation();abstractionA = new RefinedAbstraction(implementorA, "B");abstractionA->operation();delete implementorA;delete abstractionA;Implementor *implementorB = new ConcreteImplementorB();Abstraction *abstractionB = new RefinedAbstraction(implementorB, "C");abstractionB->operation();abstractionB = new RefinedAbstraction(implementorB, "D");abstractionB->operation();delete implementorB;delete abstractionB;return 0;
}

运行结果:

type: A Concrete Implementor A operation
type: B Concrete Implementor A operation
type: C Concrete Implementor B operation
type: D Concrete Implementor B operation

在上述示例中,Implementor是实现接口,定义了实现部分的操作方法。ConcreteImplementorA和ConcreteImplementorB是具体实现类,分别实现了实现接口的操作方法。Abstraction是抽象类,包含了一个实现接口的成员变量,并定义了抽象部分的操作方法。RefinedAbstraction是扩展抽象类,继承了抽象类,并实现了抽象部分的操作方法。
在main()函数中,首先创建了一个具体实现类ConcreteImplementorA的对象,并将其传递给扩展抽象类RefinedAbstraction的构造函数,创建了一个抽象类对象abstractionA。通过调用抽象类的operation()方法,实现了抽象部分的操作。然后,创建了一个具体实现类ConcreteImplementorB的对象,并将其传递给扩展抽象类RefinedAbstraction的构造函数,创建了另一个抽象类对象abstractionB。同样地,通过调用抽象类的operation()方法,实现了抽象部分的操作。
通过桥接器模式,可以将抽象部分与实现部分分离,使它们可以独立地变化。桥接器模式提供了更好的灵活性和可扩展性,可以在运行时动态地将不同的抽象部分和实现部分组合起来,而不影响彼此。

http://www.lryc.cn/news/175049.html

相关文章:

  • 公网远程访问GeoServe Web管理界面【内网穿透】
  • AIMS医院手术麻醉信息系统全套源码,自主版权,开箱即用
  • 中秋特辑——3D动态礼盒贺卡(可监听鼠标移动)
  • Json文件序列化读取
  • ClickHouse(15)ClickHouse合并树MergeTree家族表引擎之GraphiteMergeTree详细解析
  • 面试题库(二):Java基础
  • Linux:无法接收组播数据
  • R语言贝叶斯非参数模型:密度估计、非参数化随机效应META分析心肌梗死数据...
  • 在gazebo仿真环境中加载多个机器人
  • 少有人走的路阅读笔记
  • 极简解析!IP计费的s5爬虫IP
  • 动静分离和前后端分离
  • 【SpringBoot】集成SpringSecurity+JWT实现多服务单点登录,原来这么easy
  • 手把手教你使用PLSQL远程连接Oracle数据库【内网穿透】
  • 浅谈Deep Learning 与 Machine Learning 与Artificial Intelligence
  • 和 Node.js 说拜拜,Deno零配置解决方案
  • AxureRP制作静态站点发布互联网,实现公网访问【内网穿透】
  • 【好文推荐】openGauss 5.0.0 数据库安全——全密态探究
  • 堆的介绍与堆的实现和调整
  • 【广州华锐互动】马属直肠检查3D虚拟仿真课件
  • Nuxt 菜鸟入门学习笔记:路由
  • C++基本语法和注释
  • CSRF攻击
  • 2023 “华为杯” 中国研究生数学建模竞赛(D题)深度剖析|数学建模完整代码+建模过程全解全析
  • 【Proteus仿真】【STM32单片机】基于单片机的智能晾衣架控制系统
  • C/C++代码静态检测工具PC-Lint常见错误总结
  • 概率深度学习建模数据不确定性
  • Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解
  • 【ELK】日志系统部署
  • 【算法挨揍日记】day08——30. 串联所有单词的子串、76. 最小覆盖子串