Java设计模式8-结构型-外观模式
2017-12-26 21:59
288 查看
外观模式,在项目开发和实际运用中十分频繁,但是其极易理解。
该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。
1、涉及到3个角色。
a.门面角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。
b.子系统角色:实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口。
c.客户角色:通过调用Facede来完成要实现的功能。
2、代码演示:
3、优点
松散耦合
使得客户端和子系统之间解耦,让子系统内部的模块功能更容易扩展和维护;
简单易用
客户端根本不需要知道子系统内部的实现,或者根本不需要知道子系统内部的构成,它只需要跟Facade类交互即可。
更好的划分访问层次
有些方法是对系统外的,有些方法是系统内部相互交互的使用的。子系统把那些暴露给外部的功能集中到门面中,这样就可以实现客户端的使用,很好的隐藏了子系统内部的细节。
该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。
1、涉及到3个角色。
a.门面角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。
b.子系统角色:实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口。
c.客户角色:通过调用Facede来完成要实现的功能。
2、代码演示:
a.3个子系统的代码(CPU,Memory,Disk) public class CPU { public void start() { System.out.print("cpu is start..."); } public void shutDown() { System.out.print("CPU is shutDown..."); } } public class Disk { public void start() { System.out.print("Disk is start..."); } public void shutDown() { System.out.print("Disk is shutDown..."); } } public class Memory { public void start() { System.out.print("Memory is start..."); } public void shutDown() { System.out.print("Memory is shutDown..."); } } b.门面类Computer //核心 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 start() { System.out.print("Computer start begin"); cpu.start(); disk.start(); memory.start(); System.out.print("Computer start end"); } public void shutDown() { System.out.print("Computer shutDown begin"); cpu.shutDown(); disk.shutDown(); memory.shutDown(); System.out.print("Computer shutDown end..."); } } c.客户端类Cilent public class Cilent { public static void main(String[] args) { Computer computer = new Computer(); computer.start(); System.out.print("================="); computer.shutDown(); } }
从上面的实例来看,有了这个Facade类,也就是Computer类,用户就不用亲自去调用子系统中的Disk,Memory、CPU类了, 不需要知道系统内部的实现细节,甚至都不用知道系统内部的构成。客户端只需要跟Facade交互就可以了
3、优点
松散耦合
使得客户端和子系统之间解耦,让子系统内部的模块功能更容易扩展和维护;
简单易用
客户端根本不需要知道子系统内部的实现,或者根本不需要知道子系统内部的构成,它只需要跟Facade类交互即可。
更好的划分访问层次
有些方法是对系统外的,有些方法是系统内部相互交互的使用的。子系统把那些暴露给外部的功能集中到门面中,这样就可以实现客户端的使用,很好的隐藏了子系统内部的细节。
相关文章推荐
- Java设计模式概述之结构型模式(外观模式)
- Java设计模式之结构型模式-外观模式(Facade)
- Java常用的设计模式12:常用设计模式之外观模式(结构型模式)
- Java经典设计模式-结构型模式-外观模式(Facade)
- java设计模式--结构型模式--外观模式
- Java经典23种设计模式之结构型模式(三)------附代理模式、适配器模式、外观模式区别
- java-设计模式(结构型)-【外观模式】
- java结构型设计模式——外观模式
- JAVA设计模式(9) —<结构型>外观模式(Facade)
- Java设计模式_结构型_外观模式_病人去医院看病
- Java设计模式_(结构型)_外观模式
- Java设计模式7-结构型-代理模式
- Java设计模式详解之门面模式(外观模式)
- Java经典设计模式之七大结构型模式(附实例和详解)
- java设计模式之外观设计模式
- 设计模式-结构型模式:外观模式 Facade
- java-设计模式(结构型)-【适配器模式】
- Java设计模式 结构模式-外观模式(Facade)
- java 设计模式第2弹--外观/门面模式
- 设计模式(3)-结构型-代理模式(proxy)以及java动态代理的两种方式