核心思想
外观模式是由代理模式发展而来的,与代理模式类似,代理模式是一对一的代理,而外观模式是一对多的代理。 在真实的子系统中,一个子系统可能有很多类组成,子系统的客户为了满足它们的需要,需要和子系统中的一些类进行交互。客户和 子系统的类进行直接交互会导致客户端对象和子系统之间高度的耦合性。 外观模式为子系统提供了一个更层次、更简单的接口,从而降低了子系统的复杂度和依赖。 外观模式可以为一些复杂的类白装成一个简单的封闭接口,外观模式对客户端屏蔽了复杂的子系统组件,并为一般的客户提供了一个简单的程序设计接口。但是它并没有高级用户在需要时使用深层次的、较复杂的类。 |
目标类:CPU、Memory、Dist public class CPU { public void startup(){ System.out.println("启动CPU"); } public void shutdown(){ System.out.println("关闭CPU"); } } public class Memory { public void startup(){ System.out.println("加载内存"); } public void shutdown(){ System.out.println("清空内存"); } } public class Dist { public void startup(){ System.out.println("加载硬盘"); } public void shutdown(){ System.out.println("卸载硬盘"); } } |
外观模式: public class Computer { private CPU cpu; private Memory memory; private Dist dist; public Computer() { // TODO Auto-generated constructor stub cpu=new CPU(); memory=new Memory(); dist=new Dist(); } public void startup(){ System.out.println("开始启动计算机"); cpu.startup(); memory.startup(); dist.startup(); System.out.println("启动计算机完成"); } public void shutdown(){ System.out.println("开始关闭计算机"); cpu.shutdown(); memory.shutdown(); dist.shutdown(); System.out.println("关闭计算机完成"); } } |
测试类: public class User { public static void main(String[] args) { Computer compuer=new Computer(); compuer.startup(); compuer.shutdown(); } } |
结果: 开始启动计算机 启动CPU 加载内存 加载硬盘 启动计算机完成 开始关闭计算机 关闭CPU 清空内存 卸载硬盘 关闭计算机完成 |
统一管理 |