设计模式-外观模式
设计模式-外观模式关注公众号 JavaStrom 解锁更多知识
角色外观模式主要包含如下角色:
场景分析这是我们平时开发用的最多的模式之一,可以说我们每天都在用这个模式在写代码,只是我们可能没有意识到。 根据 "单一职责原则" ,在软件中将一个系统划分为若干个子系统有利于降低系统的复杂性,一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小,而达到该目标的途径之一就是引入一个外观对象,它为子系统的访问提供了一个简单而单一的入口。 外观模式要求一个子系统的外部与其内部的通信通过一个统一的外观对象进行,外观类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与外观对象打交道,而不需要与子系统内部的很多对象打交道。 外观模式的目的在于降低系统的复杂程度。 外观模式从很大程度上提高了客户端使用的便捷性,使得客户端无须关心子系统的工作细节,通过外观角色即可调用相关功能。
代码实战现在我们就模拟开关机通过外观模式。 我们的 CPU 、Disk、Memory 其实就是我们不同的 Service ,所以我们先定义出各个子系统的业务功能。 定义我们的子系统角色 public class CPU { public void startup(){ System.out.println("cpu startup!"); } public void shutdown(){ System.out.println("cpu shutdown!"); } } public class Disk { public void startup(){ System.out.println("disk startup!"); } public void shutdown(){ System.out.println("disk shutdown!"); } } public class Memory { public void startup(){ System.out.println("memory startup!"); } public void shutdown(){ System.out.println("memory shutdown!"); } } 定义外观角色 /** * 外观类:给客户端提供了一个视图 * Created by unique on 2017/5/14. */ public class ComputerFacade { private CPU cpu = new CPU(); private Memory memory = new Memory(); private Disk disk = new Disk(); private ComputerFacade() { } // 单例模式 private static class Holder { private static ComputerFacade instance = new ComputerFacade(); } public static ComputerFacade getInstance() { return Holder.instance; } /** * 开机一步到位,用户不必根各个硬件打交道,就像一个开关搞定 */ public void startup(){ System.out.println("start the computer!"); cpu.startup(); memory.startup(); disk.startup(); System.out.println("start computer finished!"); } public void shutdown(){ System.out.println("begin to close the computer!"); cpu.shutdown(); memory.shutdown(); disk.shutdown(); System.out.println("computer closed!"); } } 这样我们就可以通过 外观类实现开机,而不必去与每个硬件打交道。 定义我们的 客户端类调用开机与关机。 public class UserClient { public static void main(String[] args) { ComputerFacade facade = ComputerFacade.getInstance(); facade.startup(); System.out.println("时间到了,可以关机了....."); facade.shutdown(); } } 我们可以看到打印结果,只要调用一个方法就实现了繁琐的细节。 start the computer! cpu startup! memory startup! disk startup! start computer finished! 时间到了,可以关机了..... begin to close the computer! cpu shutdown! memory shutdown! disk shutdown! computer closed! 缺点
优点
关注微信公众号 JavaStorm 获取更多知识。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为什么Java有这么多版本与C#不同?
- java – Mockito验证一个方法在间谍之后调用onces虽然它永远
- Java的素数测试如何工作?
- java – Spark DataFrame类的union()方法在哪里?
- Spring AOP实现Redis缓存数据库查询源码
- java – PDF417图像生成API推荐
- java中利用List的subList方法实现对List分页(简单易学)
- java – Google日历API OAUTH
- ThreadPoolExecutor线程池任务执行失败的时候会怎样
- Java:JFrame.setLocationRelativeTo(null)不以Ubuntu 10.0