设计模式学习(二十二)————桥接模式
2016-10-01 08:38
281 查看
桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化
今天使用不同品牌的手机和在其上面安装不同的应用举例子:
有了手机和软件,就可以在主程序中将不同的软件加载到不同的手机中了:
根据程序可以看出,使用桥接模式,可以将手机的抽象和软件的抽象分开,然后在增加新类型的手机和新的软件时相互并不影响,独立的变化带来的好处就体现在了这种模式中!
最后放上源码地址:https://github.com/Dongzhixiao/designMode_qt/tree/master/MobileSoftware_Bridge_pattern_22
今天使用不同品牌的手机和在其上面安装不同的应用举例子:
#ifndef MOBILE_H #define MOBILE_H #include <QDebug> class HandsetSoft //手机软件抽象类 { public: virtual void Run() = 0; virtual ~HandsetSoft(){} }; class HandsetGame final : public HandsetSoft //手机游戏 { public: void Run() override { qDebug()<<"运行手机游戏"; } }; class HandsetAddressList final : public HandsetSoft { public: void Run() override { qDebug()<<"运行手机通讯录"; } }; class HandsetMP3 final : public HandsetSoft { public: void Run() override { qDebug()<<"运行手机MP3播放"; } }; class HandsetBrand //手机品牌抽象类 { public: virtual void Run() = 0; void setHandsetSoft(HandsetSoft * soft) { _soft = QSharedPointer<HandsetSoft>(soft); } virtual ~HandsetBrand(){} protected: QSharedPointer<HandsetSoft> _soft; }; class HandsetBrandN final : public HandsetBrand { public: void Run() override { qDebug()<<"N类型的手机:"; _soft->Run(); } }; class HandsetBrandM final : public HandsetBrand { public: void Run() override { qDebug()<<"M类型的手机:"; _soft->Run(); } }; class HandsetBrandS final : public HandsetBrand { public: void Run() override { qDebug()<<"S类型的手机:"; _soft->Run(); } }; #endif // MOBILE_H
有了手机和软件,就可以在主程序中将不同的软件加载到不同的手机中了:
#include "mobile.h" int main() { HandsetBrand *ab = new HandsetBrandN; ab->setHandsetSoft(new HandsetGame()); ab->Run(); ab->setHandsetSoft(new HandsetAddressList()); ab->Run(); delete ab; ab = new HandsetBrandM; ab->setHandsetSoft(new HandsetGame()); ab->Run(); ab->setHandsetSoft(new HandsetAddressList()); ab->Run(); return 0; }
根据程序可以看出,使用桥接模式,可以将手机的抽象和软件的抽象分开,然后在增加新类型的手机和新的软件时相互并不影响,独立的变化带来的好处就体现在了这种模式中!
最后放上源码地址:https://github.com/Dongzhixiao/designMode_qt/tree/master/MobileSoftware_Bridge_pattern_22
相关文章推荐
- 设计模式学习笔记十二:桥接模式(Bridge Pattern)
- 设计模式学习笔记(八)——Bridge桥接模式
- 设计模式学习之桥接模式
- 学习笔记——JAVA设计模式<7>桥接模式
- 步步为营 .NET 设计模式学习笔记 十三、Bridge (桥接模式)
- 设计模式学习笔记--桥接模式
- 设计模式学习8——桥接模式
- Java设计模式学习07——桥接模式
- 设计模式学习笔记二十二:对象的轮回 - 通用对象池的实现
- java学习笔记-设计模式11(桥接模式)
- 二十二、享元模式——设计模式学习笔记
- 设计模式学习笔记——桥接模式(Bridge Patten)
- 桥接模式 - 设计模式学习
- 设计模式学习----Bridge桥接模式
- 设计模式学习笔记(二十二)——State状态
- 步步为营 .NET 设计模式学习笔记 十三、Bridge (桥接模式)
- 步步为营 .NET 设计模式学习笔记 二十二、Memento(备望录模式)
- 设计模式学习笔记(八)——Bridge桥接模式
- 设计模式学习笔记—桥接模式
- 学习设计模式(4)——桥接模式