软件设计-外观模式
计算机开启
在计算机主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法 ,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(HardDisk)的读取(read())、操作系统(OS)的载入(load()),如果某一过程发生错误则计算机启动失败。
类图
java
package rjsj.no12; /** * CPU类:子系统类 * */ public class CPU { public void run(){ System.out.println("处理器运行"); } public void off(){ System.out.println("处理器关闭"); } }
package rjsj.no12; /** * Disk(硬盘)类:子系统类 * */ public class Disk { public void read(){ System.out.println("硬盘读取"); } public void off(){ System.out.println("硬盘关闭"); } }
package rjsj.no12; /** * Memory类:子系统类 * */ public class Memory { public void check(){ System.out.println("内存自检"); } public void off(){ System.out.println("内存关闭"); } }
package rjsj.no12; /** * 操作系统OS类:子系统类 * */ public class OS { public void load(){ System.out.println("操作系统载入"); } public void off(){ System.out.println("操作系统关闭"); } }
package rjsj.no12; /** * 主窗口类:外观类 * */ public class Mainframe { private Memory memory; private CPU cpu; private Disk disk; private OS os; public Mainframe(){ memory = new Memory(); cpu = new CPU(); disk = new Disk(); os = new OS(); } public void on(){ memory.check(); cpu.run(); disk.read(); os.load(); } public void off(){ memory.off(); cpu.off(); disk.off(); os.off(); } }
package rjsj.no12; public class Client { public static void main(String[] args) { Mainframe mainframe = new Mainframe(); System.out.println("电脑启动中..."); mainframe.on(); System.out.println("启动完成。"); System.out.println("电脑关闭中..."); mainframe.off(); System.out.println("关闭完成。"); } }
C++
#include <iostream> using namespace std; class Memory{ public: void check(){ cout<<"内存自检"<<endl; } void off(){ cout<<"内存关闭"<<endl; } }; class Cpu{ public: void run(){ cout<<"CPU运行"<<endl; } void off(){ cout<<"CPU关闭"<<endl; } }; class HardDisk{ public: void read(){ cout<<"硬盘读取"<<endl; } void off(){ cout<<"硬盘关闭"<<endl; } }; class Os{ public: void load(){ cout<<"操作系统加载"<<endl; } void off(){ cout<<"操作系统关闭"<<endl; } }; class MainFrame{ private: Memory w1; Cpu w2; HardDisk w3; Os w4; public: void on(){ cout<<"开机中......"<<endl; w1.check(); w2.run(); w3.read(); w4.load(); } void off(){ cout<<"关机中......"<<endl; w1.off(); w2.off(); w3.off(); w4.off(); } }; int main(){ MainFrame w; w.on(); w.off(); return 0; }
运行截图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端