设计模式:桥接模式 C++实现

本文介绍了桥接模式的概念,将其与策略模式对比,并通过C++代码示例展示了如何实现桥接模式,强调了该模式在降低类间耦合、提高可维护性和扩展性上的优势。
摘要由CSDN通过智能技术生成


前言

今天复习了桥接模式,感觉挺有用的,这里跟大家分享下。


1. 桥接模式理解

桥接模式,就是对合成/聚合复用原则的应用,替代类间继承关系,实现类间松耦合。个人觉得原理上和策略模式差不多,将变化部分从类中抽离,只是策略模式抽离的是多变的算法,桥接模式抽离的是类间的继承关系,即将继承改为组合或聚合关系,这样就可以确保独立变化,不会对其它类有影响,方便扩展,这也满足开放-封闭原则,即对扩展开放,对修改关闭。这里的桥接指的就是类间的组合/聚合关联关系。

桥接模式比较正规的定义与类图(引用《大话设计模式》)如下所示:
在这里插入图片描述
在这里插入图片描述


2. 桥接模式C++实现

这里以手机与手机软件的关系为例实现桥接模式。
我们知道,手机有不同的品牌,手机内也可以安装不同的软件,如果按照继承关系来处理手机与手机软件的关系,如下图所示:
在这里插入图片描述
在这里插入图片描述
从继承关系类图可以看出,如果要新增软件或者新增手机品牌,要添加多个继承关系,比如按照软件分类,新增一个软件,就要添加新的软件类,以及不同品牌手机对应的软件子类;新增一个手机品牌,就需要在不同软件类添加对应的子类,是不是很麻烦!

如果采用桥接模式,类图如下:
在这里插入图片描述
不论是新增手机品牌还是软件,只要新增对应的一个类就可以,不需要添加其它任何附加类,是不是很棒!

上述例子的桥接模式C++代码实现:

#include <iostream>
#include <memory>
#include <boost\mpl\vector.hpp>
#include <boost\mpl\for_each.hpp>

//*****************Bridge Pattern*******************

//抽象手机软件
class HandsetSoft
{
   
public:
	virtual void Run() = 0;
};

class HandsetGame 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值