- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
举例 1.电源总开关 为了使用方便,一个电源总开关可以控制两盏灯、一台空调和一台空调的启动和关闭。通过该电源总开关可以同时控制上述所有电器设备,使用外观模式设计该系统。 举例 举例 2.旅游照相 几乎每个人都喜欢旅游,那旅游要带个相机吧。现在单反数码相机很多见,但是不是人人都会用。沿途不仅要记录下美好的风光,更重要的还要给自己拍几张留念。可是有时候找了半天没找到一个会用的路人,别着急,把相机跳到自动档,按下快门就可以了。这也跟外观模式很像。 举例 外观模式 更简单的理解外观模式 通过外观的包装,使客户程序只能看到外观对象而不会看到具体细节对象。从而降低了系统的复杂度,并提高了程序的可维护性。 如同黑匣子 外观模式 未使用外观模式的系统设计 外观模式 无疑对程序的易用性和可维护性都是很大的提高 外观模式 模式分析 外观模式也是“迪米特法则”的体现,通过引入一个新的外观类可以降低原有系统的复杂度,同时降低客户类与子系统类的耦合度。 外观模式 模式分析 外观模式的目的在于降低系统的复杂程度。 外观模式从很大程度上提高了客户端使用的便捷性,使得客户端无须关心子系统的工作细节,通过外观角色即可调用相关功能。 外观模式 外观模式实例与解析 ? 外观模式 总结: 从程序可以看出,通过EncryptFacade一个外观类即可实现文件读取,加密,保存的控制,而不需要单独去操作这些功能,这正是外观模式的作用。 外观模式 模式优缺点 外观模式的优点 降低了大型软件系统中的编译依赖性,并简化了系统在不同平台之间的移植过程。 只是提供了一个访问子系统的统一入口,并不影响用户直接使用子系统类。 演讲完毕,谢谢大家 外观模式 产生原因 在软件开发过程中,程序一般会越做越大,而这样系统中类及子系统之间的影响会使彼此间的关系变得错综复杂即过多的耦合,这就导致了随着系统中类或子系统发生变化,与之相关联的子系统或类就需要发生变化 本节课所学习的Fa?ade模式正式解决这种问题的方法之一。下面我们先通过两个例子理解一下: 用户 电源总开关 灯 空调 电风扇 空调 接口 游客 按快门 调光圈 调对焦点 外观模式 模式定义 外观模式(Facade Pattern):就是为子系统中的一组接口提供一个统一的高层接口。这一接口使得子系统更加容易使用。。 随着增加,高度耦合 外观模式 外观模式动机 引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,将复杂系统的内部子系统与客户程序之间的依赖解耦,降低了系统的耦合度。 它侧重于简化接口,更多的是一种架构模式。 Frequency of use: high 外观模式 模式结构 外观模式包含如下两个角色: Facade: 外观角色 外观角色是在客户端直接调用的角色 SubSystem:子系统角色 在软件系统中可以同时有一个或者多个子系统角色 外观模式 模式结构 外观模式 模式分析 根据“单一职责原则”,在软件中将一个系统划分为若干个子系统有利于降低整个系统的复杂性。 引入一个外观对象,它为子系统的访问提供了一个简单而单一的入口。 外观模式 模式优缺点 外观模式的优点 对客户屏蔽子系统组件,减少了客户处理的对象数目并使得子系统使用起来更加容易。同时,客户代码变简单 实现了子系统与客户之间的松耦合关系。 外观模式 模式优缺点 外观模式的缺点 不能很好地限制客户使用子系统类,如果对客户访问子系统类做太多的限制则减少了可变性和灵活性。 在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”。 外观模式 模式适用环境 在以下情况下可以使用外观模式: 当要为一个复杂子系统提供一个简单接口时可以使用外观模式。 客户程序与多个子系统之间存在很大的依赖性。 在层次化结构中,可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度。 外观模式 模式扩展 一个系统有多个外观类 在外观模式中,通常只需要一个外观类,并且此外观类只有一个实例,换言之它是一个单例类。在很多情况下为了节约系统资源,一般将外观类设计为单例类。当然这并不意味着在整个系统里只能有一个外观类,在一个系统中可以设计多个外观类,每个外观类都负责和一些特定的子系统交互,向用户提供相应的业务功能。 外观模式 模式扩展注意 不要试图通过外观类为子系统增加新行为 不要通过继承一个外观类在子系统中加入新的行为,这种做法是错误的。 外观模式的用意:为子系统提供一个集中化和简化的沟通渠
文档评论(0)