一、概念
其目的在于降低系统的复杂程度!
1.1、定义
又叫门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口,让子系统更容易使用。
- 已经存在的子系统群或者子模块:SubSystemA 、SubSystemB、SubSystemC...
- Facade,装饰类:核心类,负责向客户提供“门面接口”
1.2、解决的问题
- 问题分析:如图,实际系统已经有很多旧系统或者模块,开发中需要访问这些子系统或者模块,这会造成调用关系复杂,调试开发困难,难以维护等问题。
- 模式的解决思路:抽离单独层,外观类Facade,专门负责各个子系统或者模块调用,一次来降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口。
二、模式的应用和优缺点
2.1、应用场景
- 实例:
1、医院看病导诊台:去医院看病,可能要去挂号、门诊、划价、取药,让患者或患者家属觉得很复杂,如果有提供接待人员,只让接待人员来处理,就很方便。
2、windows的窗口系统,就是外观模式的例子。如关闭窗口功能,可能设计数据管理对象保存数据,窗口管理对象擦除界面,内存管理对象释放内存,这些对象都很复杂,但是通过外观模式,调用者只需要window.close()。
2.2、优缺点
优点:
1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。缺点:
不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。