设计模式之外观模式

#include<iostream>

//电脑的例子更形象:
//电脑整机是 CPU、内存、硬盘的外观。有了外观以后,启动电脑和关闭电脑都简化了。
//直接 new 一个电脑。
//在 new 电脑的同时把 cpu、内存、硬盘都初始化好并且接好线。
//对外暴露方法(启动电脑,关闭电脑)。
//启动电脑(按一下电源键):启动CPU、启动内存、启动硬盘
//关闭电脑(按一下电源键):关闭硬盘、关闭内存、关闭CPU

//硬件基类
class Hardware {
public:
    virtual void Open() = 0;
    virtual void Close() = 0;
};

//cpu
class Cpu : public Hardware {
public:
    //实现细节
    void Open()override {
    
        std::cout << "cpu is open !\n";
    }
    void Close()override {
        std::cout << "cpu is close !\n";
    }
};

//内存
class Memory : public Hardware {
public:
    //实现细节
    void Open()override {

        std::cout << "memory is open!\n";
    }
    void Close()override {
        std::cout << "memory is close !\n";
    }
};

//硬盘
class HardDisk : public Hardware {
public:
    //实现细节
    void Open()override {

        std::cout << "harddisk is open!\n";
    }
    
    void Close()override {
        std::cout << "harddisk is close !\n";
    }
};

//主机外观 
class Computer {
private:
    //主机所拥有的硬件
    Hardware* cpu;
    Hardware* memory;
    Hardware* hardDisk;
public:
    Computer() {
        //装机 。。给电脑装配硬件
        cpu = new Cpu();
        memory = new Memory();
        hardDisk = new HardDisk();
    }
    void Open() {
        cpu->Open();
        memory->Open();
        hardDisk->Open();
        std::cout << "已开机\n";
    }
    void Close(){
        cpu->Close();
        memory->Close();
        hardDisk->Close();
        std::cout << "已关机\n";
    }
};

int main()
{
    //组装电脑
    Computer* computer = new Computer;
    //打开电脑
    computer->Open();
    //关闭电脑
    computer->Close();
    system("pause");

    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、天道酬勤 逮住2019年的尾巴,回归周记。 2019只剩不到两个月的时间,努力完成剩下的计划。(当然,周记计划...
    hoolee_454d阅读 1,495评论 0 0
  • 运动护肤 1、泡脚 6/7,护肤2次 2、运动:爬山1次,羽毛球1次,散步3次 学习技能 1、学习强国 7/7 2...
    一如既往加油阅读 1,144评论 0 0
  • 采用沉淀和水热合成方法制备了氧化钴。采用XRD,电镜,光谱分析等测试手段对所合成的氧化钴进行表征。 只是做了水相反...
    王琪_强化班阅读 3,604评论 1 3
  • 刚刷完leetcode周赛,只做出了2道题。第三道题就卡住了,感觉应该用图的遍历做,但是有点记不起图的遍历具体实现...
    296b871d5cd0阅读 847评论 0 1
  • 沉默里 在漫长的黑夜里 大多数人都睡着 那几个醒着的人 此刻也沉默了 心里的火与身边的火 开始缠绕交织 最后冲向夜...
    尘小尘阅读 1,634评论 0 2

友情链接更多精彩内容