标签:start 外部 客户 pattern rgs cad put 方法 out
外观模式又称为门面模式,为一组类似功能的集群,比如类库、子系统等,提供一致的入口供client调用
角色和职责:
1.门面(Facade)-Computer:
外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合
2.子系统(Packages)=CPU、Memory、Disk:
实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口
UML图:
具体源码:
/** * CPU */ public class CPU { /** * 启动CPU */ public void startCpu(){ System.out.println("启动CPU"); } /** * 关闭CPU */ public void shutdownCpu(){ System.out.println("关闭CPU"); } }
/** * 内存条 */ public class Memory { public void startMemory(){ System.out.println("启动内存"); } public void shutdownMemory(){ System.out.println("关闭内存"); } }
/** * 桌面 */ public class Disk { public void startDisk(){ System.out.println("启动桌面"); } public void shutdownDisk(){ System.out.println("关闭桌面"); } }
/** * 电脑 */ public class Computer { private CPU cpu = null; private Memory memory = null; private Disk disk = null; public Computer(){ this.cpu = new CPU(); this.memory = new Memory(); this.disk = new Disk(); } /** * 启动电脑 */ public void start(){ this.cpu.startCpu(); this.memory.startMemory(); this.disk.startDisk(); } /** * 关闭电脑 */ public void shutdown(){ this.cpu.shutdownCpu(); this.memory.shutdownMemory(); this.disk.shutdownDisk(); } }
public class Main { public static void main(String[] args) { Computer computer = new Computer(); computer.start();//启动电脑 System.out.println("------------------------------------------"); computer.shutdown();//关闭电脑 } }
优缺点:
优:
应用场景:
为复杂的模块或子系统提供外界访问的模块
子系统相互独立
在层析结构中,可以使用外观模式定义系统的每一层的入口。
源码地址:https://github.com/qjm201000/design_pattern_facade.git
标签:start 外部 客户 pattern rgs cad put 方法 out
原文地址:https://www.cnblogs.com/qjm201000/p/10069511.html