设计模式-外观模式

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

    }

}

 

 


 

实验结果:

 

 

 
 
posted @ 2022-04-22 10:17  临易  阅读(162)  评论(0编辑  收藏  举报