外观模式
设计模式源码git地址:design-pattern-src: 设计模式源码 (gitee.com)
- 通用类图
- 场景举例
- 优点
- 缺点
- 注意
- 总结
通用类图
把功能统一到一块,形成一个总控,就类似于家里电闸的总开关,可以控制所有的电器
就拿我们公司举例,如果我平时遇到某个系统的问题,比如财务的问题找财务系统负责人,人力的找人力负责人,我还得知道他们是谁,我也没必要记住他们,那么一个角色出现了,充当了中间人的作用,那就是客服,我知道如果出问题了,就去找她,她给我找具体的人,这就是外观模式的一种体现
角色
这样看下来一共有两个角色
外观,相当于客服
子系统,相当于各个部门的负责人
场景举例
拿总控进行举例,如果我按总开关打算控制家中所有的灯,那么代码如下
先看调用端
1 | //外观模式,一步齐活 |
外观类
1 | public class Facade { |
3个子类
1 | public class BedRoom { |
优点
相当于封装了一层,子系统怎么变不影响,提供统一入口,方便调用,降低客户类与子系统的耦合度(可以想作,我只需要找客服,不需要找其他人了,降低与他们的联系,也就是耦合)
缺点
符合迪米特法则(最少知道),但不符合开闭原则(每次子系统添加方法,外观类都得改变)
注意
1、通常只需要一个外观类,因为他本来就是总开关的角色,你在写个类继承他,给他增加方法,那就违背了它本来的意义
总结
网上看了几个有jdbcutils的,tomcat的一些源码,但我觉得都有点牵强,不得不说这个模式技术点并不多,只是提供了一个统一封装的思想
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 柠檬大师的空间站!
评论