type
status
date
slug
summary
tags
category
icon
password
外观模式在平时较少提到,但是我们在开发中会自然的用到外观模式,思想和实现都比较简单。它的设计思想是:为了使复杂的子系统更容易被使用,应当为子系统的众多接口提供一个简洁的高层接口。也就是设计一个类把多个类的功能合并在一起构成我们需要的方法,这样上层调用就很简单,后端开发的controller、service、dao三层结构其实就是外观模式。
使用场景
- 如果你需要一个指向复杂子系统的直接接口,且该接口的功能有限,则可以使用外观模式。子系统通常会随着时间的推进变得越来越复杂。即便是应用了设计模式,通常你也会创建更多的类。尽管在多种情形中子系统可能是更灵活或易于复用的,但其所需的配置和样板代码数量将会增长得更快。为了解决这个问题,外观将会提供指向子系统中最常用功能的快捷方式,能够满足客户端的大部分需求。
- 如果需要将子系统组织为多层结构,可以使用外观。创建外观来定义子系统中各层次的入口。你可以要求子系统仅使用外观来进行交互,以减少子系统之间的耦合。
优缺点
优点:
- 对客户程序隐藏子系统的细节,减少客户端对于子系统的耦合,能够拥抱变化
- 外观类对子系统的接口封装,使得系统更易于使用
缺点:
- 外观类接口膨胀,由于子系统的接口都有外观类统一对外暴露,使得外观类API接口较多,在一定程度上增加了用户使用成本
- 外观类没有遵循开闭原则,当业务出现变更时,需要直接修改外观类
结构
模板代码
使用实例ContextImpl
ContextImpl
封装了startActivity
、startService
、sendBroadcast
一系列核心方法,而各个方法内部又是通过调用其它类来实现的📎 参考
- 作者:LuluNotion
- 链接:https://tangly1024.com/article/design-pattern-facade
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章