• 桥接模式(C++)


    #include <iostream>
    using namespace std;
    
    class software
    {
    public:
        software(){}
        virtual ~software(){}
        virtual void exec()=0;
    };
    
    class game : public software
    {
    public:
        game(){}
        virtual ~game(){}
        void exec(){cout<<"play game"<<endl;}
    };
    
    class office : public software
    {
    public:
        office(){}
        virtual ~office(){}
        void exec(){cout<<"work office"<<endl;}
    };
    
    class computer
    {
    public:
        computer():_instance(NULL){}
        virtual ~computer(){}
        void setsoftware(software *instance){_instance=instance;}
        virtual void Exec()=0;
    
    protected:
        software *_instance;
    };
    
    class wincomputer : public computer
    {
    public:
        wincomputer(){}
        virtual ~wincomputer(){}
        void Exec(){cout<<"win  ";_instance->exec();}
    };
    
    class maccomputer : public computer
    {
    public:
        maccomputer(){}
        virtual ~maccomputer(){}
        void Exec(){cout<<"mac  ";_instance->exec();}
    };
    
    int main()
    {
        computer *pc=new wincomputer;
        software *ps=new office;
        pc->setsoftware(ps);
        pc->Exec();
        delete ps;
        delete pc;
    
        pc=new maccomputer;
        ps=new game;
        pc->setsoftware(ps);
        pc->Exec();
        delete ps;
        delete pc;
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    Clipper库中文文档详解
    uboot makefile构建分析
    nvidia tk1使用记录--基本环境搭建
    学习
    es6 es7新语法
    react dva发送请求详解(转)
    antDesign表单getFieldDecorator
    react dav
    js实现截取a标签的href属性和内容
    react学习
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2561172.html
Copyright © 2020-2023  润新知