Java设计模式(9)之外观模式
2018-03-19 11:50
295 查看
外观模式:
客户端访问子系统,需要通过外观对象,外观对象为各个子系统中的各种功能提供一个一致的界面,外观模式相当于定义了一个接口,这个接口使得这些子系统更加容易使用。类型:
结构型模式外观模式的3个角色:
客户端Client:访问子系统,需要通过外观对象。外观对象Façade:为客户端访问子系统提供一个统一的入口。
子系统Modules: 每个子系统有各自特有的功能。
外观模式关系图:
外观模式示例:
子系统模块:/** * Create by zhaihongwei on 2018/3/19 */ public class ModuleA { public void doAThing() { System.out.println("A 模块的功能"); } } /** * Create by zhaihongwei on 2018/3/19 */ public class ModuleB { public void doBThing() { System.out.println("B 模块的功能"); } } /** * Create by zhaihongwei on 2018/3/19 */ public class ModuleC { public void doCThing() { System.out.println("C 模块的功能"); } }
外观对象:
/** * Create by zhaihongwei on 2018/3/19 */ public class Facade { private ModuleA moduleA; private ModuleB moduleB; private ModuleC moduleC; public void doSomething() { moduleA = new ModuleA(); moduleB = new ModuleB(); moduleC = new ModuleC(); moduleA.doAThing(); moduleB.doBThing(); moduleC.doCThing(); } }
客户端对象:
/** * Create by zhaihongwei on 2018/3/19 */ public class Client { public static void main(String[] args) { ModuleA moduleA = new ModuleA(); ModuleB moduleB = new ModuleB(); ModuleC moduleC = new ModuleC(); moduleA.doAThing(); moduleB.doBThing(); moduleC.doCThing(); System.out.println("-----------------------------------------------"); Facade facade = new Facade(); facade.doSomething(); } }
通过客户端对象,可以看出,在没有外观对象的时候,如果客户端需要使用整个系统时候(整个系统的正常启动可能需要A,B,C三个模块配合使用),必须对所有的子系统进行使用,增加了客户端和子系统之间的耦合度,而为了降低这种耦合的情况,产生了外观模式,只需要通过外观对象,就可以直接操作整个系统了。
外观模式的优点:
降低了客户类与子系统类的耦合度,实现了子系统与客户之间的松耦合关系。外观模式对客户端屏蔽了子系统组件,使子系统的使用更加简单。
降低原有系统的复杂度和系统中的编译依赖性,并简化了系统在不同平台之间的移植过程。
只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类。
个人感想:
学到这里,个人感觉各种模式之间有很多相似的地方,每种模式的产生应该并不是突然产生的,而是模式之间不断演进的过程,从模式之间的关系图即可以体现出来。模式之间的关系图可以看这里:模式之间关系图
相关文章推荐
- Java设计模式学习记录-外观模式
- JAVA设计模式十九--Facade(外观模式)
- java设计模式----外观模式
- Java设计模式---外观模式
- Java常用的设计模式12:常用设计模式之外观模式(结构型模式)
- java设计模式之外观模式学习笔记
- java/android 设计模式学习笔记(14)---外观模式
- JAVA设计模式---外观模式
- Java设计模式--外观模式(Facade)
- Java设计模式之外观模式(Facade)
- JAVA设计模式-25-外观模式
- java设计模式之外观设计模式
- JAVA设计模式——外观模式(门面模式)
- 【Java设计模式12】——外观模式
- 设计模式之第7章-外观模式(Java实现)
- Java进阶篇设计模式之五-----外观模式和装饰器模式
- Java设计模式(八) 外观模式详解
- 重学java23种设计模式(10)外观模式
- Java设计模式十七:外观模式(Facade)
- java设计模式之外观模式Facade