外观模式/门面模式
![](https://storage.bummon.com//image/202307222148942.png)
外观模式/门面模式
Bummon外观模式/门面模式
一、定义
摘自百度百科:是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
二、角色分类
外观角色(Facade)
也被称为门面角色,是系统对外的统一接口
子系统角色(SubSystem)
子系统可以为多个,其并不知道外观角色的存在
客户角色(Client)
调用方法的角色
三、实现方式
UML图
具体实现
我们在现实中就有相应的例子,假如我们有一个开关板,然后当我们点它的时候就会执行一系列的操作,接下来我们使用代码实现一下
外观角色(Facade)
1 | public class SwitchBoard { |
CircuitA
子系统角色(SubSystem)
1 | public class CircuitA { |
客户角色(Client)
1 | public class Client { |
运行结果
1 | 打开电路A |
四、应用场景
以下部分内容摘自菜鸟教程
意图: 为子系统的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这个子系统更加容易使用
主要解决: 降低访问复杂系统的内部子系统的复杂度,简化客户端之间的接口
何时使用:
- 客户端不需要知道系统内部的复杂联系,整个系统只需要提供一个“接待员”即可
- 定义系统的入口
如何解决: 客户端不与系统耦合,外观类与系统耦合
关键代码: 在客户端与复杂系统之间再加一层,这一层将调用顺序、依赖关系处理好
应用实例:
- 去医院看病,可能要挂号、门诊、划价、取药等,让患者或其家属觉得很复杂,如果有提供接待人员,只让接待人员处理就会很方便
- Java的三层开发模式
适用场景:
- 为复杂的模块或子系统提供外界访问的模块
- 子系统相对独立
- 预防低水平人员带来的风险
注意事项: 在层次化结构中,可以使用外观模式定义系统中每层的入口
五、优缺点
优点
- 减少系统相互依赖
- 提高灵活性
- 提高安全性
缺点
不符合开闭原则,如果要改东西很麻烦,继承和重写都不合适
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果