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);
}

相关推荐

  1. c++ 设计模式 模式

    2024-04-01 13:50:02       21 阅读
  2. 设计模式模式

    2024-04-01 13:50:02       32 阅读
  3. 设计模式——模式

    2024-04-01 13:50:02       33 阅读
  4. 设计模式-模式

    2024-04-01 13:50:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-01 13:50:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 13:50:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 13:50:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 13:50:02       18 阅读

热门阅读

  1. pytorch中nn.GroupNorm()作用及参数说明

    2024-04-01 13:50:02       20 阅读
  2. Let`s move - sui move开发实战-dao(5)反馈

    2024-04-01 13:50:02       15 阅读
  3. el-dialog宽度自适应

    2024-04-01 13:50:02       15 阅读
  4. 04_Linux磁盘和文件系统

    2024-04-01 13:50:02       18 阅读
  5. 使用Jackson进行序列化和反序列化

    2024-04-01 13:50:02       17 阅读
  6. Android笔记--MediaCodec(一)

    2024-04-01 13:50:02       13 阅读
  7. 英国生物数据库的申请流程

    2024-04-01 13:50:02       13 阅读
  8. flask+uwsgi+云服务器 部署服务端

    2024-04-01 13:50:02       22 阅读