定义
提供一个高层次接口,用来访问子系统中的一群接口
适用场景
- 子系统越来越复杂,引入外观模式提供简单接口调用
- 多层系统结构,适用外观对象作为每层入口,简化层次间调用
优点
- 简化调用,无需深入子系统内部
- 降低系统耦合
- 层次划分:对外和对内接口区分开
- 符合迪米特法则:最少知道法则
缺点
不符合开闭原则,当增加子系统时,外观类需要进行修改
外观模式和其他模式
- 外观模式和中介模式
前者重在外界和子系统之间的交互,后者是子系统内部之间的交互 - 外观模式和单例模式
可以把外观对象做成单例模式
3.外观模式和抽象模式
外观类可以通过抽象工厂获取子系统实例,子系统可以在内部对外观类进行屏蔽
举例
场景举例:
购买物品需要接入用户系统、商品系统、订单系统、支付系统、物流系统多个子系统,将这些五个系统中的接口行为集中在一个顶层接口中按顺序实现,生成一个购买物品的顶层接口提供给外界,外界只需要关注购买物品接口即可。