设计模式学习笔记(C++实现)(八)--桥接模式

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.《设计模式:可复用面向对象软件的基础》

猜你喜欢

转载自blog.csdn.net/u014337397/article/details/80410672
今日推荐