外观模式的作用:
松散耦合 外观模式松散了客户端与子系统的耦合关系 让子系统内部的模块能更容易扩展和维护。
简单易用 外观模式让子系统更加易用 客户端不再需要了解子系统内部的实现 也不需要跟众多子系统内部的模块进行交互 只需要跟门面类交互就可以了。
更好的划分访问层次-通过合理使用 Facade 可以帮助更好地划分访问的层次。有些方法是对系统外的 有些方法是系统内部使用的。把需要暴露给外部的功能集中到门面中 这样既方便客户端使用 也很好地隐藏了内部的细节。
外观模式的角色:
SubSystem: 子系统角色。表示一个系统的子系统或模块。
Facade: 外观角色 客户端通过操作外观角色从而达到控制子系统角色的目的。对于客户端来说 外观角色好比一道屏障 对客户端屏蔽了子系统的具体实现。
实例探究
假设一台电脑 它包含了 CPU(处理器) Memory(内存) Disk(硬盘)这几个部件 若想要启动电脑 则先后必须启动 CPU、Memory、Disk。关闭也是如此。
但是实际上在电脑开/关机时根本不需要去操作这些组件 因为电脑已经帮都处理好了 并隐藏了这些东西。
这些组件好比子系统角色 而电脑就是一个外观角色。
SubSystem 子系统角色
public class CPU {public void startup(){System.out.println("cpu startup!");}public void shutdown(){System.out.println("cpu shutdown!");}}public class Memory {public void startup(){System.out.println("memory startup!");}public void shutdown(){System.out.println("memory shutdown!");}}public class Disk {public void startup(){System.out.println("disk startup!");}public void shutdown(){System.out.println("disk shutdown!");}}
Facade 外观角色
public class Computer {private CPU cpu;private Memory memory;private Disk disk;public Computer(){cpu = new CPU();memory = new Memory();disk = new Disk();}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!");}}
具体调用如下:
Computer computer = new Computer(); computer.startup(); computer.shutdown();
原文地址:https://blog.csdn.net/u012420654/article/details/60332995
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题