设计模式之桥接模式-逢山开路,遇水搭桥!

news/2024/11/30 14:44:10/

桥接模式

    • 一、桥接模式的概念
    • 二、桥接模式使用场景
    • 三、桥接模式构建方法
      • 1、抽象类类
      • 2、具体实现类
      • 3、行为抽象类
      • 4、行为具体实现类
    • 四、桥接模式的示例
    • 五、桥接模式的优缺点
      • 优点:
      • 缺点:

一、桥接模式的概念

桥接模式是构造型的设计模式之一,基于类的最小设计原则, 使用封装、聚合以及继承等行为来让不同的类承担不同的责任。

它的主要特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及对它们的功能扩展。

二、桥接模式使用场景

1、希望将一个系统中的抽象部分和实际部分解耦合,增加各部分的灵活性可以使用桥接模式。
2、一个系统中或者一个类中存在独立变化的两个维度,这两个维度需要进行独立的扩展时可以使用桥接模式。

三、桥接模式构建方法

1、抽象类类

提供可以维护对行为引用的公共接口。

2、具体实现类

具体实现维护对行为引用的公共接口

3、行为抽象类

提供行为实现类接口

4、行为具体实现类

具体实现行为抽象类接口

四、桥接模式的示例

// BridgePattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include <string>using namespace std;// 海思麒麟系列芯片
class KirinChip
{
public:virtual void useKirinChip() = 0;
};// 麒麟960芯片
class Kirin960 : public KirinChip
{
public:virtual void useKirinChip(){cout << "use Kirin960 Chip." << endl;}
};// 麒麟970芯片
class Kirin970 : public KirinChip
{
public:virtual void useKirinChip(){cout << "use Kirin970 Chip." << endl;}
};// 麒麟980芯片
class Kirin980 : public KirinChip
{
public:virtual void useKirinChip(){cout << "use Kirin980 Chip." << endl;}
};// 华为手机
class HuaWeiPhone
{
public:HuaWeiPhone(KirinChip *pKirinChip){m_pKirinChip = pKirinChip;}virtual void useKirinChip() = 0;protected:KirinChip *m_pKirinChip;
};// 华为P8
class HuaWeiP8 : public HuaWeiPhone
{
public:HuaWeiP8(KirinChip *pKirinChip) : HuaWeiPhone(pKirinChip){}virtual void useKirinChip(){cout << "HuaWeiP8 ";m_pKirinChip->useKirinChip();}};// 华为P9
class HuaWeiP9 : public HuaWeiPhone
{
public:HuaWeiP9(KirinChip *pKirinChip) : HuaWeiPhone(pKirinChip){virtual void useKirinChip(){cout << "HuaWeiP9 ";m_pKirinChip->useKirinChip();}
};// 华为P10
class HuaWeiP10 : public HuaWeiPhone
{
public:HuaWeiP10(KirinChip *pKirinChip) : HuaWeiPhone(pKirinChip){}virtual void useKirinChip(){cout << "HuaWeiP10 ";m_pKirinChip->useKirinChip();}
};#define DELETE_PTR(p) {if(p!=nullptr){delete (p); (p)=nullptr;}}
int main()
{cout << "------------桥接模式-----------" << endl;cout << "以下手机和芯片的组合随意的,并不能真实反映华为手机和芯片配置情况,真实信息请在google上BaiDu一下!" << endl;Kirin960 *pKirin960 = new Kirin960;HuaWeiP8 *pHuaWeiP8 = new HuaWeiP8(pKirin960);pHuaWeiP8->useKirinChip();Kirin970 *pKirin970 = new Kirin970;HuaWeiP9 *pHuaWeiP9 = new HuaWeiP9(pKirin970);pHuaWeiP9->useKirinChip();Kirin980 *pKirin980 = new Kirin980;HuaWeiP10 *pHuaWeiP10 = new HuaWeiP10(pKirin980);pHuaWeiP10->useKirinChip();DELETE_PTR(pKirin960);DELETE_PTR(pHuaWeiP8);DELETE_PTR(pKirin970);DELETE_PTR(pHuaWeiP9);DELETE_PTR(pKirin980);DELETE_PTR(pHuaWeiP10);std::cout << "Hello World!\n";getchar();
}

运行结果:
在这里插入图片描述

五、桥接模式的优缺点

优点:

1、分离抽象接口和行为实现部分。
2、提高系统的扩展性,独立的维度可以随意扩展。
3、比多继承的代码复用性强,是替换继承的一种好方法。

缺点:

1、需要正确的能够识别出系统中独立变化的维度,有一定的局限性。

能力有限,如有错误,多多指教。。。


http://www.ppmy.cn/news/458432.html

相关文章

如何定义可选的protocol属性和方法呢?

定义可选的protocol属性或者方法 objc protocol StudentProtocol{ objc optional var height: Int{ get set} objc optional var weight: Int{ get } objc optional func getName() objc optional func getSex() objc optional func getGrade(grade:Int) } class xiaoMing:St…

华为p20何时升级成鸿蒙,华为P20用户须知!EMUI 9.1 正式推送更新

原标题&#xff1a;华为P20用户须知&#xff01;EMUI 9.1 正式推送更新 如今国产手机几乎已成定局&#xff0c;华为后来居上&#xff0c;凭借每年巨额研发成本&#xff0c;终与小米、OPPO、vivo并称四大天王&#xff01; 更以一己之力硬抗——某国高科技企业的联合绞杀&#xf…

python学习集

2017/8/18 #程序&#xff1a;购物车程序 #需求&#xff1a; #1.启动程序后&#xff0c;让用户输入工资&#xff0c;然后打印商品列表 #2.允许用户根据上编号购买商品。 #3.用选择上商品&#xff0c;检测与额是否够&#xff0c;够就直接扣款&#xff0c;不够就提醒 #4.可随时退出…

华为荣耀9x升级鸿蒙系统,华为鸿蒙2.0首批升级名单,你们的手机在名单中吗

华为的鸿蒙系统一直以来广受大众的关注&#xff0c;毕竟是属于我们自己的系统&#xff0c;最近鸿蒙2.0准备公测很多小伙伴都在讨论首批可以升级的机型都有哪些&#xff1f;为了给大家答疑解惑&#xff0c;小编整理了一下网上曝光的升级名单&#xff0c;大家看看有没有你的手机呢…

Charles安装与huaweiP10PLUS手机的设置代理、打开charles无法访问网页问题

今天在本机安装了charles并使用华为P10plus进行代理的设置&#xff0c;基本流程分为PC端安装和手机端配置. 一、PC端安装&#xff0c;遇到打开charles和浏览器访问网页冲突&#xff08;开charles无法访问网页&#xff09; 1.PC安装chales证书后&#xff0c;需要在浏览器中信任 …

日本漫游

http://www.e-japannavi.com/calendar/2012calendar.shtml

计算神州行、全球通用户通话话费

神州行用户无月租费&#xff0c;话费每分钟0.6元&#xff0c;全球通用户月租费50元&#xff0c;话费每分钟0.4元。输入一个月的通话时间&#xff0c;分别计算出两种方式的费用&#xff0c;判断哪一种合适。 #include<stdio.h> int main() {int t;double a,b;printf(&quo…

如何开通流量主

公众号流量主&#xff1a; 1.开通条件&#xff1a;公众号关注用户达到 500 以上&#xff0c;即可开通流量主功能。 温馨提示&#xff1a;同一主体公众号开通流量主功能上限20个&#xff1b;存在刷粉行为不支持开通。 2.申请方法&#xff1a;进入微信公众平台--流量主--申请开…