外观模式的定义
外观模式(Facade),也被称为“门面模式”,为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。
模型:
Facade:外观角色,了解子系统所有的方法和任务,此角色有自己的方法,client通过此角色方法来调用子系统的功能
Subsystem:子系统角色,可以是一个也可以是多个,子系统是分化的不同的处理模块,不是单独的类。
代码演示:
1.子系统:
|
|
强调一下:这两个类不是独立的,可以看成是一个集合。如果不明白的话,往下面去看实例说明,应该好懂一些。
2.外观类:
|
|
对外提供的方法根据客户端的需求来决定。下面通过一个实例来了解一下。
实例说明
例如我们在今日头条或者微信公众号上发布文章,经常分为两步:
编写文章内容并提交文章
审核(审核通过才能发布成功)
1.子系统
2.外观类
|
|
3.调用:
|
|
运行:
强调:
子系统每个类不是独立的,两个类分为不同的模块并形成一个集合;另外子系统每个类中的方法数可以是一个或者多个。
实外观模式的优缺点及其他
1.优点
减少系统的相互依赖,客户端只能调用外观类的方法
提高安全性
子系统是隐藏的
2.缺点
不符合开闭原则!!,如果对开闭原则不熟悉的朋友可以看下面的文章:
3.适用场景
在以下情况下可以考虑使用外观模式:
设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。
开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。
维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。
本文部分定义来源于网络