设计模式---桥接模式
来源:互联网 发布:淘宝ebay代购 编辑:程序博客网 时间:2024/06/10 22:29
桥接模式
对象的继承关系是在编译时就定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。
合成、聚合原则
尽量使用合成,聚合,尽量不要使用类继承
聚合
表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分
合成
表示一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样
优先使用对象的合成,聚合将有助于保持每个类被封装,并被集中在单个任务上。这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。
桥接模式
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
什么叫抽象与它的实现分离,这并不是说,让抽象类与其派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。
实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。
只要真正深入地理解了设计原则,很多设计模式其实就是原则的应用而已,或许在不知不觉中就在使用设计模式了。
#include<iostream>
using namespace std;
class HandsetSoft
{
public:
virtual void Run(){}
};
class HandsetGame: public HandsetSoft
{
public:
void Run()
{
cout<<" running game ... \n";
}
};
class HandsetAddressList: public HandsetSoft
{
public:
void Run()
{
cout<<" running addresslist ... \n";
}
};
class HandsetBrand
{
protected:
HandsetSoft *soft;
public:
void SetHandsetSoft(HandsetSoft* soft)
{
this->soft = soft;
}
virtual void Run()
{
}
};
class HandsetBrandN:public HandsetBrand
{
public:
void Run()
{
soft->Run();
}
};
class HandsetBrandM:public HandsetBrand
{
public:
void Run()
{
soft->Run();
}
};
int main()
{
HandsetBrand *hb;
hb = new HandsetBrandN();
hb->SetHandsetSoft(new HandsetGame());
hb->Run();
hb->SetHandsetSoft(new HandsetAddressList());
hb->Run();
hb = new HandsetBrandM();
hb->SetHandsetSoft(new HandsetGame());
hb->Run();
hb->SetHandsetSoft(new HandsetAddressList());
hb->Run();
return 0;
}
阅读全文
0 0
- 设计模式----桥接模式
- 设计模式---桥接模式
- 设计模式:桥接模式
- 设计模式 桥接模式
- 设计模式 - 桥接模式
- 设计模式--桥接模式
- 设计模式--桥接模式
- 设计模式 - 桥接模式
- 设计模式-桥接模式
- 设计模式 - 桥接模式
- 设计模式 - 桥接模式
- 【设计模式-桥接模式】
- 设计模式:桥接模式
- 【设计模式】----桥接模式
- 【设计模式】桥接模式
- 设计模式--桥接模式
- 设计模式-桥接模式
- 设计模式:桥接模式
- Mac环境配置本地PHP项目路径
- PHP 第三方调用 UC_Center用户登录认证
- 刷清橙OJ--A1063.求导函数
- 外网访问内网的FTP服务器
- Android 网络发送xml数据和调用webservice(传智播客)
- 设计模式---桥接模式
- 比特币开发专题(区块链密匙生成详细介绍)
- PHP文件包含漏洞原理分析和利用方法
- springMVC下jsp引用外部js,css等静态资源的解决方法
- FatMouse's Speed(dp)
- win7右键打开方式添加应用程序无法设置
- 学期课程之OS小结
- 文件下载中设置response的Header中的文件名为ISO-8859-1
- mysql---计算字段