前言分析1 .一个客户类需要与多个业务类进行交互,这些需要交互的业务类始终作为一个整体发挥作用
2 .引入负责与多个业务类子系统(Subsystem )交互的新外观类(Facade ),客户类只需与外观类进行交互即可
3 .为多个商务舱的调用提供统一的入口,简化类与类之间的交互
4. 没有外观类:每个客户级都需要与多个子系统进行复杂的交互,导致系统耦合度变大。
5. 引入外观类:客户级只需与外观级直接交互,客户级与子系统之间原有复杂的参考关系通过外观级实现,降低了系统耦合度。
系统外部和内部的通信通过统一的外观类进行,后者将客户类和子系统内部的复杂性分开。 这样,客户类就只需要与外观角色进行交互,而不需要与子系统内部的许多对象进行交互
1 .外观模式定义系统中的一系列界面提供统一的入口视图模式,一个高层接口对其进行定义,使该子系统易于使用
1 .也称为门模式
2 .是zjdxlc定律的具体实现
3 .通过引入新的外观角色,降低现有系统的复杂度,同时降低客户类和子系统的耦合度
4 .子系统是一个广义的概念,它可以是类、功能模块、系统的一些或完整的系统
2 .外观模式的结构与实现
外观模式有以下两个作用
(外观角色)
子系统角色
通过实例说明某软件开发应用于多个软件的文件加密模块。 该模块文件中的数据被加密,加密后的数据被存储在一个新文件中。 具体过程由三部分组成,分别是源文件的读取、加密、加密文件的保存。 其中,文件的读取和保存利用流实现,加密操作通过求型运算实现。 这三个操作是相对独立的,为了实现代码的独立重用,使设计更加符合单一的职责原则
使用外观模式设计文件加密模块