体系结构课件第十三章外观模式_第1页
体系结构课件第十三章外观模式_第2页
体系结构课件第十三章外观模式_第3页
体系结构课件第十三章外观模式_第4页
体系结构课件第十三章外观模式_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十三章外观模式

(FacadePattern)—门面模式13.1外观模式简介如医院的就诊的情况(医院—子系统,外观—导医)客户端程序与完成实际业务功能的子系统程序之间通信时采用的2种方案:13.1外观模式简介(续)上述A方案的问题在于组件的客户(即外部接口,或客户程序)和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内部子系统的变化之间的依赖相互解耦?为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。——《设计模式》GoF13.2外观模式的结构外观模式是对象的结构模式。外观模式没有一个一般化的类图描述,下图演示了一个外观模式的示意性对象图:

这种结构不仅体现了类的单一职责原则,而且也体现了开放/封闭原则。子系统和系统之间是组合关系,而不是继承关系。高层总是相对稳定,低层总是相对易变。所以我们应该尽量依赖高层抽象,而不是低层细节实现。13.2外观模式的结构(续)外观(Facade)角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。子系统(SubSystem)角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。每一个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面仅仅是另外一个客户端而已。需要注意的2点:外观类通常是单例类,每个子系统一个外观类;扩展功能不应该继承外观类,而是在子系统代码中扩展,外观类只是为对子系统的访问提供一个集中化的、简化的渠道。13.3示例保安系统:由两个录像机、三个电灯、一个遥感器和一个警报器组成,保安系统的操作人员需要经常将这些仪器启动和关闭。示例:SecurityClassical示例:SecurityFacade13.4外观模式的应用设计初期阶段有意识的建立三层架构,层与层之间建立外观Facade(层间接口)。开发阶段子系统往往因为不断的重构演化而变得越来越复杂,大规模的使用模式会产生很多很小的类,这将使维护工作变得复杂,而Facade会减少它们之间的依赖---子系统通过Facade对象向外提供服务。维护阶段维护一个遗留的大系统时,Facade可以负责与遗留代码的复杂的交互工作。13.5外观模式总结从客户程序的角度来看,Facade模式不仅简化了整个组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程度上也达到了一种“解耦”的效果——内部子系统的任何变化不会影响到Facade接口的变化。Facade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Facade很多时候更是一种架构设计模式。注意区分Facade模式、Adapter模式、Bridge模式与Decorator模式:Facade模式注重简化接口Ada

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论