游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1895|回复: 1

简单的BRIDGE 模式例子

[复制链接]

4

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2010-8-27 11:57:00 | 显示全部楼层 |阅读模式
bridge模式最大的好处就是接口与实现相分离,但是这同样带来了弊端,因为接口与实现通过某个中介捆绑在一起所以变得不灵活,当有一个接口需要改动时实现类也必须相应的改动。下面是个简单的bridge模式的例子,代码是本人原创,本想花点时间改改,做一个游戏相关的小例子 因为能力和时间的双重原因最终导致放弃。
代码应该分布到不同的模块中去 在这里我直接罗列出来了

//IElectricalEquipment.h 部分
#include <iostream>
using namespace std;

class IElectricalEquipment
{
public:
        IElectricalEquipment(void){};
        ~IElectricalEquipment(void){};
        virtual void        On() = 0;
        virtual void        Off() = 0;
};

//cFan.h部分
#include "ielectricalequipment.h"

class cFan :
        public IElectricalEquipment
{
public:
        cFan(void){};
        ~cFan(void){};
        void        On() { cout<< "fan is on" << endl;};
        void        Off(){ cout<< "fan is off" << endl;};
};

//cLight.h部分

#include "ielectricalequipment.h"

class cLight :
        public IElectricalEquipment
{
public:
        cLight(void){};
        ~cLight(void){};
        void        On() { cout<< "light is on" << endl;};
        void        Off(){ cout<< "light is off" << endl;};
};

以上3个类的声明是以接口类IElectricalEquipment为基类的bridge模式实现部分的代码  也就是他们负责bridge模式实现部分的功能  

下面开始简单用几个类声明完善bridge模式的接口部分

//cSwitch 部分
#pragma once
#include "IElectricalEquipment.h"

class cSwitch
{
public:
        cSwitch(void){};
        ~cSwitch(void){};
        void        On(){ m_pEquipmemt->On();}
        void        Off(){ m_pEquipmemt->Off();}
        void        SetEquipment( IElectricalEquipment* pEquipment)
        {
                m_pEquipmemt = pEquipment;
        }

protected:
        IElectricalEquipment* m_pEquipmemt;
};

//cNormalSwitch.h部分
#include "cswitch.h"

class cNormalSwitch :
        public cSwitch
{
public:
        cNormalSwitch(void){};
        ~cNormalSwitch(void){};
};

//cFancySwitch .h部分
#pragma once
#include "cswitch.h"


class cFancySwitch :
        public cSwitch
{
public:
        cFancySwitch(void){};
        ~cFancySwitch(void){};

};
//main.cpp部分

#include "cFan.h"
#include "cFancySwitch.h"
#include "cLight.h"
#include "cNormalSwitch.h"
#include "cSwitch.h"
#include "IElectricalEquipment.h"

int main()
{
        IElectricalEquipment* pLight = new cLight();
        IElectricalEquipment* pFan = new cFan();
        cFancySwitch fancySwitch;
        fancySwitch.SetEquipment( pFan);
        fancySwitch.On();
        cNormalSwitch normalSwitch;
        normalSwitch.SetEquipment( pLight);
        normalSwitch.On();

        return 0;

}

例子比较简单 但是基本表达了bridge模式的意图 即接口与实现相分离 希望大家喜欢


4

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2010-8-30 14:27:00 | 显示全部楼层

Re:简单的BRIDGE 模式例子

自己沙发 自己顶
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-18 20:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表