1. 1、本文档共79页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设模式2

Applicability 为一个复杂的子系统提供一个简单接口。 子系统往往会非常复杂,但是其接口应该尽可能地简单,特别是对于一般用户而言 客户与实现抽象功能的诸类之间存在一定的依赖性,facade可以降低这种依赖性 在多个子系统的结构中,使用facade模式定义子系统的入口点,有助于降低各子系统之间的依赖性 * Institute of Computer Software Nanjing University * Structure * Institute of Computer Software Nanjing University * Participants Facade 知道哪些子系统类负责处理请求 将客户的请求代理给适当的子系统对象 Subsystem classes 实现子系统的功能 处理由Facade对象指派的任务 没有facade的任何相关信息;即没有指向facade的指针 * Institute of Computer Software Nanjing University * Collaborations 客户程序通过发送请求给Facade的方式与子系统通讯,Facade将这些消息转发给适当的子系统对象 使用Facade的客户程序不需要直接访问子系统对象 * Institute of Computer Software Nanjing University * Sample Code Consequences 它对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便 它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。 化“紧耦合”为“松耦合” —— 实现组件软件的关键技术 并不限制应用使用子系统类 * Institute of Computer Software Nanjing University * Implementation 降低客户-子系统之间的耦合度,用抽象类实现Facade而它的具体子类对应于不同的子系统实现可以进一步解耦;另一种方法是用不同的子系统对象配置Facade对象 公共子系统类与私有子系统类 * Institute of Computer Software Nanjing University * Related Patterns Abstract Factory模式可以与Facade模式一起使用以提供一个接口,这一接口可用来以一种子系统独立的方式创建子系统对象 Mediator模式与Facade模式的相似之处是,它抽象了一些已有的类的功能 通常仅需要一个Facade对象,因此可以用Singleton模式 * Institute of Computer Software Nanjing University * Flyweight Intent 运用共享技术有效支持大量细粒度的对象。 Motivation 当对象的粒度太小的时候,大量对象将会产生巨大的资源消耗,因此考虑用共享对象(flyweight)来实现逻辑上的大量对象。Flyweight对象可用于不同的context中,本身固有的状态(内部状态)不随context发生变化,而其他的状态(外部状态)随context而变化 Flyweight模式对那些通常因为数量太大而难以用对象来表示的概念或实体进行建模 * Institute of Computer Software Nanjing University * Example * Institute of Computer Software Nanjing University * Example * Institute of Computer Software Nanjing University * 外部状态,作为参量传入 Flyweight对象 Applicability 一个应用程序使用了大量的对象 完全由于使用大量的对象,造成很大的存储开销 对象的大多数状态都可变为外部状态 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象 应用程序不依赖于对象标识 * Institute of Computer Software Nanjing University * Structure * Institute of Computer Software Nanjing University * Structure Object graph * Institute of Computer Software Nanjing University * Sample Code Participants Flyweight 描述一个接口,通过这个接口flyweight可以接受并作用于外部状态 ConcreteFlywei

文档评论(0)

186****0507 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档