- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章 外观模式 本章教学内容 外观模式 模式动机与定义 模式结构与分析 模式实例与解析 模式效果与应用 模式扩展 外观模式 模式动机 外观模式 模式动机 引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。 外观模式 模式定义 外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。 外观模式 模式定义 Facade Pattern: Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. Frequency of use: high 外观模式 模式结构 外观模式 模式结构 外观模式包含如下角色: Facade: 外观角色 SubSystem:子系统角色 外观模式 模式分析 根据“单一职责原则”,在软件中将一个系统划分为若干个子系统有利于降低整个系统的复杂性,一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小,而达到该目标的途径之一就是引入一个外观对象,它为子系统的访问提供了一个简单而单一的入口。 外观模式也是“迪米特法则”的体现,通过引入一个新的外观类可以降低原有系统的复杂度,同时降低客户类与子系统类的耦合度。 外观模式 模式分析 外观模式要求一个子系统的外部与其内部的通信通过一个统一的外观对象进行,外观类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与外观对象打交道,而不需要与子系统内部的很多对象打交道。 外观模式的目的在于降低系统的复杂程度。 外观模式从很大程度上提高了客户端使用的便捷性,使得客户端无须关心子系统的工作细节,通过外观角色即可调用相关功能。 外观模式 模式分析 典型的外观角色代码: public class Facade { private SubSystemA obj1 = new SubSystemA(); private SubSystemB obj2 = new SubSystemB(); private SubSystemC obj3 = new SubSystemC(); public void method() { obj1.method(); obj2.method(); obj3.method(); } } 外观模式 外观模式实例与解析 实例一:电源总开关 现在考察一个电源总开关的例子,以便进一步说明外观模式。为了使用方便,一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。通过该电源总开关可以同时控制上述所有电器设备,使用外观模式设计该系统。 外观模式 外观模式实例与解析 实例一:电源总开关 外观模式 外观模式实例与解析 实例一:电源总开关 参考代码 (Chapter 14 Facade\sample01) 演示…… 外观模式 外观模式实例与解析 实例二:文件加密 某系统需要提供一个文件加密模块,加密流程包括三个操作,分别是读取源文件、加密、保存加密之后的文件。读取文件和保存文件使用流来实现,这三个操作相对独立,其业务代码封装在三个不同的类中。现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块。 外观模式 外观模式实例与解析 实例二:文件加密 外观模式 模式优缺点 外观模式的优点 对客户屏蔽子系统组件,减少了客户处理的对象数目并使得子系统使用起来更加容易。通过引入外观模式,客户代码将变得很简单,与之关联的对象也很少。 实现了子系统与客户之间的松耦合关系,这使得子系统的组件变化不会影响到调用它的客户类,只需要调整外观类即可。 降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。一个子系统的修改对其他子系统没有任何影响,而且子系统内部变化也不会影响到外观对象。 只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类。 外观模式 模式优缺点 外观模式的缺点 不能很好地限制客户使用子系统类,如果对客户访问子系统类做太多的限制则减少了可变性和灵活性。 在不引入抽
您可能关注的文档
- 人教版小学阶段数学知识网络图讲义.doc
- 人教版小学阶段语文模拟卷9讲义.doc
- 第2节材料采购业务的核算分解.ppt
- 第二章资本管理分解.ppt
- 戴尔R720服务器安装步骤分解.doc
- 第2节串、并联电路中电压的规律分解.ppt
- 第二章自由度及机构运动简图分解.ppt
- 戴尔的生产运作管理分解.ppt
- 人教版小学六年级数学《负数的初步认识》讲义.ppt
- 第2节串并联电路中电压的规律分解.pptx
- 四川省成都市石室中学2023-2024学年高二上学期半期考试复习(2)物理试卷(解析版).docx
- 河南省实验中学2023-2024学年高二上学期期中考试物理试题.docx
- 专题3 金属及其化合物 10年高考化学真题专题分类汇编.docx
- 辽宁省沈阳市辽宁实验中学2023-2024学年高一上学期12月阶段测试数学试题.docx
- 青岛二中2023-2024学年高二上学期期末考试.docx
- 专题6 化学键 分子和晶体的结构与性质 10年高考化学真题专题分类汇编.docx
- 四川省成都市石室中学2023-2024学年高二上学期半期考试复习(2)物理试卷(原卷版).docx
- 专题13 生命活动的物质基础 有机合成 10年高考化学真题专题分类汇编.docx
- 浙江省余姚中学2023-2024学年高二下学期期中考试英语试题.docx
- 山东省青岛市第一中学2023-2024学年高二下学期期中考试化学试卷.docx
文档评论(0)