1.桥接模式简介
- 英文名称
Bridge - 主要目的
该模式可以将抽象部分和它的实现部分分离,使它们都可以独立地变化。 - 使用场景
1.你不希望在抽象和实现部分之间有一个固定的绑定关系;
2.类的抽象以及它的实现都可以通过生成子类的方法加以扩充;
3.对一个抽象的实现部分的修改对客户不产生影响。
2.桥接模式代码示例
- 测试平台
1.开发语言:C++
2.开发工具:VS2015
3.操作系统:Win7 X64 - 相关类说明
1.Program–抽象程序类,该类用来指示电脑运行的程序;
2.GameProgram、WorkProgram–具体程序类,用来说明当前电脑运行的是游戏程序还是工作程序;
3.Bridge–程序桥接类,该类使得电脑类型与其要运行程序分离,使得运行程序与电脑类型互不相关;
4.GameComputer、WorkComputer–具体电脑类,用来指示不同类型的电脑。 类图
注意:
1.本例以游戏电脑和工作电脑进行游戏和工作为例,说明桥接模式是如何工作;
2.通过桥接模式,相关联的两个类(如电脑类、程序类)可以实现独立变化,从而保证任意类型的电脑能够运行任意类型的程序。具体代码
#include <iostream>
#include <string>
using namespace std;
//程序接口类
class Program
{
public:
virtual void RunProgram() = 0;
};
//游戏程序类
class GameProgram :public Program
{
public:
void RunProgram()
{
cout << "LOL 运行中..." << endl;
}
};
//工作程序类
class WorkProgram :public Program
{
public:
void RunProgram()
{
cout << "VS2015 运行中..." << endl;
}
};
//抽象桥接类
class Bridge
{
public:
//设置当前要运行的程序
void SetPorgram(Program* pPro)
{
this->m_Pro = pPro;
}
//运行程序
virtual void RunProgram() = 0;
protected:
Program* m_Pro;
};
//游戏电脑类
class GameComputer :public Bridge
{
public:
void RunProgram()
{
this->m_Pro->RunProgram();
}
};
//办公电脑类
class WorkComputer :public Bridge
{
public:
void RunProgram()
{
this->m_Pro->RunProgram();
}
};
int main()
{
Bridge* pBridge = new GameComputer();
if (pBridge!=NULL)
{
//用游戏电脑玩游戏
Program* pPro1 = new GameProgram();
if (pPro1 !=NULL)
{
pBridge->SetPorgram(pPro1);
pBridge->RunProgram();
delete pPro1;
pPro1 = NULL;
}
cout << endl;
//用游戏电脑工作
Program* pPro2 = new WorkProgram();
if (pPro2 != NULL)
{
pBridge->SetPorgram(pPro2);
pBridge->RunProgram();
delete pPro2;
pPro2 = NULL;
}
delete pBridge;
pBridge = NULL;
}
getchar();
return 0;
}
- 输出结果
栏目导航
上一篇:设计模式学习笔记(C++实现)(七)–适配器模式
下一篇:设计模式学习笔记(C++实现)(九)–组合模式
参考文献:
1.《设计模式:可复用面向对象软件的基础》