c++ 设计模式 桥模式

最初版本

#include <iostream>
class  Message
{
public:
    virtual void Login(std::string username, std::string password) = 0;
    virtual void SendMessage(std::string messages) = 0;
    virtual void SendPicture(Image image) = 0;

    virtual void PalySound() = 0;
    virtual void DrawShape() = 0;
    virtual void WirteText() = 0;
    virtual void Connect() = 0;
    virtual ~Message() {};
};


class PCMessageBase : public Message
{
public:
    virtual void PalySound()
    {
        
    }
    virtual void DrawShape()
    {

    }
    virtual void WirteText()
    {

    }
    virtual void Connect() 
    {

    }
};

class MobileMessageBase : public Message
{
public:
    virtual void PalySound()
    {
        
    }
    virtual void DrawShape()
    {

    }
    virtual void WirteText()
    {

    }
    virtual void Connect() 
    {

    }
};
class PCMessagePerfect : public PCMessageBase
{
public:
    virtual void Login(std::string username, std::string password)
    {
        PCMessageBase::PalySound();
        /*******/
        PCMessageBase::Connect();
    }
    virtual void SendMessage (std::string message)
    {
        PCMessageBase::PalySound();
        /*******/
        PCMessageBase::WirteText();
    }
    virtual void SendPicture(Image image)
    {
        PCMessageBase::PalySound();
        /*******/
        PCMessageBase::DrawShape();

    }
};
class PCMessageLite : public PCMessageBase
{
public:
    virtual void Login(std::string username, std::string password)
    {
        PCMessageBase::Connect();
    }
    virtual void SendMessage (std::string message)
    {
        PCMessageBase::WirteText();
    }
     virtual void SendPicture(Image image)
    {
        PCMessageBase::DrawShape();
    }
};


class MobileMessagePerfect : public MobileMessageBase
{
public:
    virtual void Login(std::string username, std::string password)
    {
        MobileMessageBase::PalySound();
        /*******/
        MobileMessageBase::Connect();
    }
    virtual void SendMessage (std::string message)
    {
        MobileMessageBase::PalySound();
        /*******/
        MobileMessageBase::WirteText();
    }
     virtual void SendPicture(Image image)
    {
        MobileMessageBase::PalySound();
        /*******/
        MobileMessageBase::DrawShape();

    }
};
class MobileMessageList : public MobileMessageBase
{
public:
    virtual void Login(std::string username, std::string password)
    {
        MobileMessageBase::Connect();
    }
    virtual void SendMessage (std::string message)
    {
        MobileMessageBase::WirteText();
    }
    virtual void SendPicture(Image image)
    {
        MobileMessageBase::DrawShape();
    }
};

int main()
{
    Message * msg = new PCMessagePerfect();
}

最终版本

#include <iostream>
class Image
{

};

class MessageImp;

class Message
{
protected:
    MessageImp* messageImp;
public:
    Message(MessageImp* messageImp) : messageImp(messageImp) {}
    virtual void Login(std::string username, std::string password) = 0;
    virtual void SendMessage(std::string messages) = 0;
    virtual void SendPicture(Image image) = 0;

    virtual ~Message() {};
};

class MessageImp
{
public:
    virtual void PalySound() = 0;
    virtual void DrawShape() = 0;
    virtual void WirteText() = 0;
    virtual void Connect() = 0;
    virtual ~MessageImp() {};
};
class PCMessageImp : public MessageImp
{
public:
    virtual void PalySound()
    {

    }
    virtual void DrawShape()
    {

    }
    virtual void WirteText()
    {

    }
    virtual void Connect()
    {

    }
};
class MobileMessageImp : public MessageImp
{
public:
    virtual void PalySound()
    {

    }
    virtual void DrawShape()
    {

    }
    virtual void WirteText()
    {

    }
    virtual void Connect()
    {

    }
};
class MessagePerfect : public Message
{
public:
    MessagePerfect(MessageImp* messageImp):Message(messageImp)
    {

    }
    virtual void Login(std::string username, std::string password)
    {
        messageImp->PalySound();
        /*******/
        messageImp->Connect();
    }
    virtual void SendMessage(std::string message)
    {
        messageImp->PalySound();
        /*******/
        messageImp->WirteText();
    }
    virtual void SendPicture(Image image)
    {
        messageImp->PalySound();
        /*******/
        messageImp->DrawShape();

    }
};
class MessageLite :public Message
{
public:
    MessageLite(MessageImp* messageImp) :Message(messageImp)
    {

    }

    virtual void Login(std::string username, std::string password)
    {
        messageImp->Connect();
    }
    virtual void SendMessage(std::string message)
    {
        messageImp->WirteText();
    }
    virtual void SendPicture(Image image)
    {
        messageImp->DrawShape();
    }
};
int main()
{
    MessageImp* imp = new MobileMessageImp();
    Message* mge = new MessagePerfect(imp);
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值