应用场景:
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;
}