C++设计模式之桥接模式
2021/11/4 11:39:32
本文主要是介绍C++设计模式之桥接模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
桥接模式:将抽象部分与现实部分分离,使它们都可以独立变换。
以下情形考虑使用桥接模式:
1.当一个对象有多个变化因素的时候,考虑依赖于抽象的实现,而不是具体的实现。
2.当多个变化因素在多个对象间共享时,考虑将这部分变化的部分抽象出来再聚合/合成进来。
3.当一个对象的多个变化因素可以动态变化的时候。
优点:
将实现抽离出来,再实现抽象,使得对象的具体实现依赖于抽象,满足了依赖倒转原则。
更好的可扩展性。
可动态的切换实现。桥接模式实现了抽象和实现的分离,在实现桥接模式时,就可以实现动态的选择具体的实现。
/* 关键代码:将现实独立出来,抽象类依赖现实类。 以下示例中,将各类App、各类手机独立开来,实现各种App和各种手机的自由桥接。 */ #include <iostream> using namespace std; //抽象App类,提供接口 class App { public: virtual ~App(){cout << "~App()" << endl;} virtual void run() = 0; }; //具体的App实现类 class GameApp:public App { public: void run() { cout << "GameApp Running" << endl; } }; //具体的App实现类 class TranslateApp:public App { public: void run() { cout << "TranslateApp Running" << endl; } }; //抽象手机类,提供接口 class MobilePhone { public: virtual ~MobilePhone(){ cout << "~MobilePhone()" << endl;} virtual void appRun(App *app) = 0; // 实现App与手机的桥接 }; //具体的手机类实现 class HuaWei:public MobilePhone { public: void appRun(App *app) { cout << "HuaWei" <<endl; app->run(); } } int main() { App *gameApp = new GameApp; App *translateApp = new TranslateApp; MobilePhone *mi = new XiaoMi; MobilePhone *hua = new HuaWei; mi->appRun(gameApp); mi->appRun(translateApp); hua->appRun(gameApp); hua->appRun(translateApp; delete hua; hua = nullptr; delete mi; }
这篇关于C++设计模式之桥接模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03如何安装 App 并连接到飞牛 NAS?-icode9专业技术文章分享
- 2024-10-03如何安装飞牛 TV 并连接到影视服务器?-icode9专业技术文章分享
- 2024-10-03如何在PVE和ESXI上安装飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS安装系统异常情况处理-icode9专业技术文章分享
- 2024-10-03飞牛NAS如何创建存储空间?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS硬盘会自动休眠吗?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何安装飞牛影视和创建媒体库?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何为家人朋友开通影视账号?-icode9专业技术文章分享