主页 > 人工智能  > 

23种设计模式-桥接模式

23种设计模式-桥接模式
模式定义

桥接模式(Bridge Pattern)是一种结构型设计模式,其核心是通过将抽象与实现分离,使两者可以独立扩展和变化。该模式通过组合替代继承,有效解决多维变化场景下的类爆炸问题,尤其适用于数控系统中硬件控制与软件逻辑解耦的场景。


模式结构

抽象部分(Abstraction)

定义高层的控制逻辑(如机床操作),并持有实现部分的引用。 扩展抽象(Refined Abstraction)对抽象部分的扩展(如铣床、车床等具体机床类型)。 实现接口(Implementor)定义底层操作的接口(如控制器指令执行)。 具体实现(Concrete Implementor)实现接口的具体类(如西门子、发那科控制器)。
适用场景

数控系统开发:硬件控制器(如运动控制卡)与软件逻辑(如G代码解析)解耦。 跨平台支持:同一功能在不同控制器品牌上的差异化实现。 多维变化:如机床类型(铣床/车床)与控制协议(Modbus/EtherCAT)独立扩展。


C++示例(数控系统场景)

场景说明: 数控机床需要支持多种类型(铣床、车床)和不同品牌的控制器(西门子、发那科)。使用桥接模式分离机床操作与底层控制逻辑。

#include #include // 实现接口:控制器协议 class Controller { public: virtual ~Controller() = default; virtual void moveTo(float x, float y) = 0; virtual void startSpindle() = 0; }; // 具体实现:西门子控制器 class SiemensController : public Controller { public: void moveTo(float x, float y) override { std::cout << "[西门子] 运动到坐标(" << x << ", " << y << ")\n"; } void startSpindle() override { std::cout << "[西门子] 主轴启动,转速2000rpm\n"; } }; // 具体实现:发那科控制器 class FanucController : public Controller { public: void moveTo(float x, float y) override { std::cout << "[发那科] 移动到坐标(" << x << ", " << y << ")\n"; } void startSpindle() override { std::cout << "[发那科] 主轴启动,转速1500rpm\n"; } }; // 抽象部分:数控机床 class Machine { protected: std::unique_ptr controller; public: Machine(std::unique_ptr ctrl) : controller(std::move(ctrl)) {} virtual void processPart() = 0; virtual ~Machine() = default; }; // 扩展抽象:铣床 class MillingMachine : public Machine { public: using Machine::Machine; // 继承构造函数 void processPart() override { controller->startSpindle(); controller->moveTo(10.5, 20.3); std::cout << "铣削加工中...\n"; } }; // 扩展抽象:车床 class LatheMachine : public Machine { public: using Machine::Machine; void processPart() override { controller->startSpindle(); controller->moveTo(5.0, 0); std::cout << "车削加工中...\n"; } }; // 客户端使用 int main() { // 西门子控制铣床 auto siemensMill = std::make_unique( std::make_unique() ); siemensMill->processPart(); // 发那科控制车床 auto fanucLathe = std::make_unique( std::make_unique() ); fanucLathe->processPart(); return 0; }

输出结果

[西门子] 主轴启动,转速2000rpm [西门子] 运动到坐标(10.5, 20.3) 铣削加工中... [发那科] 主轴启动,转速1500rpm [发那科] 移动到坐标(5, 0) 车削加工中...
优势分析

解耦硬件与软件:新增控制器品牌(如三菱)只需扩展Controller,无需修改机床类。 灵活组合:铣床可自由切换西门子/发那科控制器,运行时动态绑定。 避免类爆炸:若使用继承,M种机床×N种控制器需M×N个类;桥接模式仅需M+N个类。

标签:

23种设计模式-桥接模式由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“23种设计模式-桥接模式