在电脑主机(MainFrame)中只需要按下主机的开机按钮(on()),即可调用其它硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(Hard

简介: 该博客文章通过一个电脑主机启动的示例代码,展示了外观模式(Facade Pattern)的设计模式,其中主机(MainFrame)类通过调用内部硬件组件(如内存、CPU、硬盘)和操作系统的启动方法来实现开机流程,同时讨论了外观模式的优缺点。

在电脑主机(MainFrame)中只需要按下主机的开机按钮(on()),即可调用其它硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(Hard

1、UML类图

在这里插入图片描述


2、源码

package com.zheng;

public class MainFrame {
   
   
    private Memory memory=new Memory();        //关联关系建立联系
    private Cpu cpu=new Cpu();
    private HardDisk harddisk=new HardDisk();
    private Os os=new Os();

    public void fun() {
   
   
        memory.display();
        cpu.display();
        harddisk.display();
        os.display();
        System.out.println("开机正常");

    }

}


package com.zheng;

public class Memory {
   
   
    public void display() {
   
   
        System.out.println("1、内存正常");
    }

}


package com.zheng;

public class Cpu {
   
   
    public void display() {
   
   
        System.out.println("2、cpu运行正常");
    }


}

package com.zheng;

public class HardDisk {
   
   
    public void display() {
   
   
        System.out.println("3、硬盘读取正常");
    }


}

package com.zheng;

public class Os {
   
   
    public void display() {
   
   
        System.out.println("4、操作系统载入正常");
    }


}

package com.zheng;

import java.util.Scanner;

public class Client {
   
   

    public static void main(String[] args) {
   
   
        // TODO 自动生成的方法存根
        while (true) {
   
   

            MainFrame f = new MainFrame();
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入ON进行开机:");
            String str = scan.nextLine();
            if (str.equals("ON")) {
   
   
                f.fun();
            } else {
   
   
                System.out.println("输入的信息有误!!!请重新输入");
            }
        }
    }

}

3、优缺点

优点:1、实现了子系统和客户端之间的松耦合关系,这使得子系统的变化不会影响到调用它的客户端,只需要调整外观模式就可以。2、一个子系统的修改对其他子系统没有任何影响。3、对客户端屏蔽了子系统的组件,减少了客户端所需处理的对象数目。
缺点:1、如果设计不当、增加新的子系统可能需要修改外观类的源代码,违反了开闭原则。2、不能很好的限制客户端直接使用子系统类。


在这里插入图片描述

相关文章
|
2月前
|
测试技术
升级电脑内存
升级电脑内存
56 2
|
4月前
|
C++
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
50 0
|
3月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
2月前
|
固态存储 内存技术
升级电脑内存和硬盘
升级电脑内存和硬盘
60 6
|
3月前
|
Python
python对电脑的操作,获取几核,获取操作系统,获取内存
python对电脑的操作,获取几核,获取操作系统,获取内存
|
4月前
|
KVM 虚拟化
[kvm]cpu内存硬盘配置
[kvm]cpu内存硬盘配置
|
3月前
|
Linux Shell 虚拟化
使用LiME收集主机物理内存的内容时发生宕机
使用LiME收集主机物理内存的内容时发生宕机
|
27天前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
211 1
|
16天前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
25天前
|
Java
JVM内存参数
-Xmx[]:堆空间最大内存 -Xms[]:堆空间最小内存,一般设置成跟堆空间最大内存一样的 -Xmn[]:新生代的最大内存 -xx[use 垃圾回收器名称]:指定垃圾回收器 -xss:设置单个线程栈大小 一般设堆空间为最大可用物理地址的百分之80