设计模式-桥接模式(Bridge Pattern)
来源:互联网 发布:spss modeler mac 编辑:程序博客网 时间:2024/05/16 16:25
应用场景:
1适用在需要跨多平台的图形和窗口系统。
2当需要用不同的方式改变接口和实现时。
3通过上述的介绍,我们了解为什么需要桥接模式(Bridge)和如何使用桥接模式(Bridge),由于对象的多维度的变化,使得难以决定变化时,我们可以把对象 和变化抽象出来。
如果我们的对象依赖于抽象,对于具体的实现并不关心,我们可以通过对象组合,组合出我们想要的对象。桥接模式符合OCP(对于扩展开发,对于修改关闭)设计模式的原则。
优点:
1将实现予以解耦,让它和界面之间不再永久绑定。
2抽象和实现可以独立扩展,不会影响到对方。
3 对于具体实现的修改,不会影响到客户端。
缺点:
1增加了设计复杂度。
2抽象类的修改影响到子类。
简单实现:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
//手机软件
class HandsetSoft
{
public:
virtualvoid Run()=0;
};
//游戏软件
class HandsetGame : public HandsetSoft
{
public:
virtualvoid Run()
{
cout<<"运行手机游戏"<<endl;
}
};
//通讯录软件
class HandSetAddressList : public HandsetSoft
{
public:
virtualvoid Run()
{
cout<<"手机通讯录"<<endl;
}
};
//手机品牌
class HandsetBrand
{
protected:
HandsetSoft*m_soft;
public:
voidSetHandsetSoft(HandsetSoft* temp)
{
m_soft= temp;
}
virtualvoid Run()=0;
};
//M 品牌
class HandsetBrandM : public HandsetBrand
{
public:
virtualvoid Run()
{
m_soft->Run();
}
};
//N 品牌
class HandsetBrandN : public HandsetBrand
{
public:
virtualvoid Run()
{
m_soft->Run();
}
};
//客户端
int main()
{
HandsetBrand*brand;
brand =new HandsetBrandM();
brand->SetHandsetSoft(newHandsetGame());
brand->Run();
brand->SetHandsetSoft(newHandSetAddressList());
brand->Run();
return0;
}
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式--桥接模式(bridge pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-桥接模式(Bridge Pattern)
- 设计模式 桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式-----桥接模式(Bridge Pattern)
- 设计模式【桥接模式Bridge Pattern】
- iPhone 真机调试安装流程
- Postfix邮件服务器搭建(八)
- 【iOS学习】五、block方法总结
- 基于spark1.4的Spark-Sql
- Unity5.0状态机
- 设计模式-桥接模式(Bridge Pattern)
- 2015 Multi-University Training Contest 2
- android 命令获取手机中项目数据库
- typeof 与GetType()的区别
- image source相机snap模式采集
- 802.1x
- activity之间传递List<E>值
- 拼写纠错
- mangle nat filter