外观模式( Facade),也叫“过程模式:外观模式为子系统中的一组接口提供个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用,并且屏蔽了内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。 .在计算机主机( Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法,如内存( Memory)的自检( check())、CPU的运行(run())、硬盘( HardDisk)的读取(read()、操作系统(OS)的载入(load()等,如果某一过程发生错误则计算机启动失败。使用外观模式模拟该过程,绘制类图并编程实现 想要学习一个设计模式,首要的就是了解这个设计模式解决什么。 当我们不去使用案例模式的时候,会在客户端中的main()方法中创建相应的对象并且去调用各个对象的一系列方法从而实现案例。 传统方式的问题分析 用外观模式解决问题的思路 子系统类 外观类:聚合了各个子系统并调用其方法 客户端:调用外观类的方法
什么是外观模式
通俗的说:要实现一些连续的操作,外观模式可以使客户只需调用一个接口来而不是多个接口来达成目的。比如安装软件时的一键安装,安全软件的一键加速等。案例
传统方案下的案例分析
我们可以定义一个高层的接口,在高层接口中去访问各个子系统中的各个方法。从而对客户端屏蔽内部子系统的细节,使得客户端只需要和这个高层接口发送调用,而不用去了解子系统的内容细节。外观模式的UML类图
Mainframe类:外观类( Facade),为客户端提供统一的调用接口。
Client类:调用者,调用外观接口。
Memory,CPU,HardDisk,OS类:子系统,处理 Facade对象指派的任务,他是功能的实际提供者外观模式的案例代码
package facade; public class Memory { private static Memory instance = new Memory(); public static Memory getInstance() { return instance; } public boolean check(boolean operIf) { System.out.println("内存开始自检"); if (operIf) { operIf = new java.util.Random().nextBoolean() ? true : false; } if (operIf) { System.out.println("内存自检完成"); return true; } else { System.out.println("内存自检失败"); return false; } } }
package facade; public class CPU { private static CPU instance = new CPU(); public static CPU getInstance() { return instance; } public boolean run(boolean operIf) { System.out.println("cpu开始运行"); if (operIf) { operIf =new java.util.Random().nextBoolean() ? true : false; } if (operIf) { System.out.println("cpu运行成功"); return true; } else { System.out.println("cpu运行失败"); return false; } } }
package facade; public class HardDisk { private static HardDisk instance = new HardDisk(); public static HardDisk getInstance() { return instance; } public boolean read(boolean operIf) { System.out.println("硬盘开始读取"); if (operIf) { operIf =new java.util.Random().nextBoolean() ? true : false; } if (operIf) { System.out.println("硬盘运行成功"); return true; } else { System.out.println("硬盘运行失败"); return false; } } }
package facade; public class OS { private static OS instance = new OS(); public static OS getInstance() { return instance; } public boolean load(boolean operIf) { System.out.println("操作系统开始载入"); if (operIf) { operIf =new java.util.Random().nextBoolean() ? true : false; } if (operIf) { System.out.println("操作系统载入成功"); return true; } else { System.out.println("操作系统载入失败"); return false; } } }
package facade; public class Mainframe { private Memory memory; private CPU cpu; private HardDisk hardDisk; private OS os; private boolean operIf = true; public void setOperIf(boolean operIf) { this.operIf = operIf; } public Mainframe() { super(); this.memory = memory.getInstance(); this.cpu = cpu.getInstance(); this.hardDisk = hardDisk.getInstance(); this.os = os.getInstance(); } public void on() { System.out.println("按下主机按钮"); operIf=memory.check(operIf); operIf=cpu.run(operIf); operIf=hardDisk.read(operIf); operIf=os.load(operIf); } }
package facade; public class Client { public static void main(String[] args) { // TODO Auto-generated method stub Mainframe mainframe = new Mainframe(); mainframe.on(); } }
总结
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算