设计模式5-桥模式

桥模式也是单一职责模式的一种,设计的初衷是为了避免子类急剧膨胀,充斥重复代码.

动机

由于某些类型固有的实现逻辑,使得他们具有两个甚至多个变化的维度,如何应对这种多个维度的变化,如何利用面向对象的技术可以使得类型轻松地沿着两个甚至多个方向的变化,而不引入额外的复杂度.

实例

考虑一个messager通信模块类设计,首先定义一个基类,包含登录,发送消息,发送图片,发出声音,画图,写文件,连接等操作.

class Messager{
   
public:
    virtual void Login(const  string& user_name,const string& password)=0;
    virtual void SendMessage(const string& message)=0;
    virtual void SendPicture(const Image& image)=0;

    virtual void PlaySound()=0;
    virtual void DrawShape()=0;
    virtual void WriteText()=0;
    virtual void Connect()=0;

    virtual ~Messager(){
    }
};

Messager可以在PC上实现,也可以在移动平台上实现,可以定义两个类,表示在不同的平台上的实现 .其中PlaySound,DrawShape,WriteText,Connet 的实现方式是不同的,需要在子类中进行 override.

//平台实现
class PCMessagerBase:public Messager{
   
public:
    virtual void PlaySound(){
   
        //****pc

    }
    virtual void DrawShape(){
   
        //***pc
    }
    virtual void WriteText(){
   
        //****pc
    }
    virtual void Connect(){
   
        //******pc
    }
};
//平台实现
class MobileMessagerBase:public Messager{
   
public:
    virtual void PlaySound(){
   
        //======mobile
    }
    virtual void DrawShape(){
   
        //======mobile
    }
    virtual void WriteText(){
   
        //======mobile
    }
    virtual void Connect(){
   
        //======mobile
    }

};

然后在不同的平台上,我们需要支持不同的功能,比方说,我们需要推出一个精简版,一个完美版,如果采用继承的方式,还会定义四个类,表示pc上的精简版,完美版,移动平台上的精简版,完美版,

class PCMessagerLite:public PCMessagerBase{
   
public:
    virtual void
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值