栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++设计模式之桥接模式

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++设计模式之桥接模式

桥接模式:将抽象部分与现实部分分离,使它们都可以独立变换。

以下情形考虑使用桥接模式:

1.当一个对象有多个变化因素的时候,考虑依赖于抽象的实现,而不是具体的实现。

2.当多个变化因素在多个对象间共享时,考虑将这部分变化的部分抽象出来再聚合/合成进来。

3.当一个对象的多个变化因素可以动态变化的时候。

优点:

将实现抽离出来,再实现抽象,使得对象的具体实现依赖于抽象,满足了依赖倒转原则。

更好的可扩展性。

可动态的切换实现。桥接模式实现了抽象和实现的分离,在实现桥接模式时,就可以实现动态的选择具体的实现。

#include 

using namespace std;

//抽象App类,提供接口
class App {
  public:
  	virtual ~App(){cout << "~App()" << endl;}
  	virtual void run() = 0;
};

//具体的App实现类
class GameApp:public App {
  public:
  void run() {
     cout << "GameApp Running" << endl;
  }
};

//具体的App实现类
class TranslateApp:public App {
  public:
  	void run() {
      cout << "TranslateApp Running" << endl;
    }
};

//抽象手机类,提供接口
class MobilePhone {
  public:
  	virtual ~MobilePhone(){ cout << "~MobilePhone()" << endl;}
  	virtual void appRun(App *app) = 0;  // 实现App与手机的桥接
};

//具体的手机类实现
class HuaWei:public MobilePhone {
  public:
  	void appRun(App *app) {
      cout << "HuaWei" <run();
    }
}

int main() {
  App *gameApp = new GameApp;
  App *translateApp = new TranslateApp;
  MobilePhone *mi = new XiaoMi;
  MobilePhone *hua = new HuaWei;
  
  mi->appRun(gameApp);
  mi->appRun(translateApp);
 	hua->appRun(gameApp);
  hua->appRun(translateApp;
  
   delete hua;
   hua = nullptr;
   delete mi;
}






转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433546.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号