(1)案例背景:
在计算机主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘的(HardDisk)的读取(read())、操作系统(OS)的载入(load())等,如果某一过程发生错误则计算机启动失败。使用外观模式模拟该过程,绘制类图并编程实现。(课本230页第二题)
(2)实现步骤:
- 根据题意,画出外观模式的类图,使主机类Mainframe充当外观角色,内存类Memory,CPU类CPU,硬盘类HardDisk和操作系统类OS充当子系统角色
- 根据类图,编写并实现代码
- 编译并运行代码,使代码能够输出模拟出来的电脑开机过程
(3)案例总结:
在以下情况下可以使用外观模式:
- 当要为一个复杂子系统提供一个简单接口的时候可以使用外观模式,该接口可以满足大部分用户需求,用户也可以越过外观类直接访问子系统
- 客户程序和多个子系统之间存在很大的依赖性。引入外观类将子系统与客户以及其他子系统解耦,可以提高子系统的独立性和可移植性。
- 在层次化结构中,可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而是通过外观类建立联系,降低层之间的耦合度。
代码结构:
详细代码:
Memory.java:
package Mainframe.Function;
import Mainframe.Mainframe.Mainframe;
public class Memory {
public void check(){
System.out.println("内存自检。");
}
}
CPU.java:
package Mainframe.Function;
public class CPU {
public void run(){
System.out.println("CPU运行。");
}
}
HardDisk.java:
package Mainframe.Function;
public class HardDisk {
public void read(){
System.out.println("硬盘读取。");
}
}
OS.java:
package Mainframe.Function;
public class OS {
public void load(){
System.out.println("操作系统载入。");
}
}
Mainframe.java:
package Mainframe.Mainframe;
import Mainframe.Function.CPU;
import Mainframe.Function.HardDisk;
import Mainframe.Function.Memory;
import Mainframe.Function.OS;
public class Mainframe {
public Memory memory = new Memory();
private CPU cpu = new CPU();
private HardDisk hardDisk = new HardDisk();
private OS os = new OS();
public void on(){
memory.check();
cpu.run();
hardDisk.read();
os.load();
}
}
Client.java:
package Mainframe;
import Mainframe.Mainframe.Mainframe;
public class Client {
public static void main(String[] args) {
System.out.println("详细设计实验报告 1904班白旭君 2019005368");
Mainframe mainframe = new Mainframe();
mainframe.on();
}
}
实验结果:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/128200.html