设计模式-桥接模式(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;

}


0 0
原创粉丝点击