《访问者模式》-(精选)课件.pptVIP

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章目标 理解访问者模式 缘起 话说有对一年轻夫妇生了一对双胞胎男孩。俩小子长得一模一样,还特别调皮。 平时一般都是妈妈照顾俩小子。可是有一天, 妈妈出差了,晚上爸爸给俩小子洗完澡,把他放到床上,催他们快睡觉,小宝就笑起来了:“哥哥都洗两次了,我都还没洗澡呢。”。爸爸汗道:“还好不是喂饭” 分析 首先要回避掉非常多的判断操作 对这些对象做什么要可扩展,最好别改代码,甚至连重编译都不要…… 调用要简单…… 先来看一个例子 看了《洪武三十二》之后,总结出了这些: 当男人成功时,背后多半有一个伟大的女人 当女人成功时,背后大多有一个不成功的男人 当男人失败时,闷头喝酒,谁也不用劝 当女人失败时,眼泪汪汪,谁劝也没用 当男人恋爱时,凡事不懂也装懂 当女人恋爱时,遇事懂也装不懂 …… …… 于是,使用程序员的语言记下这个日记。 第N次日记 人(类)大都是这样滴: 第N次日记 男人(类)是这样滴表现: 第N次日记 女人(类)又是这样滴表现: 第N次日记 拿着日记去度世人(客户端调用): 日记不能度化人了? 某日,来一人,说,我没成功也没失败,我……结婚了,她也结婚了,我们表现也不一样啊 访问者模式 状态稳定,反映不同,那就解耦 访问者模式实现 状态抽象类:规定客户端可以访问什么,参数规定那些对象是可以被访问的 访问者模式实现 具体状态类:规定客户端访问到一个类之后该做什么 访问者模式实现 抽象操作和具体元素 访问者模式实现 对象结构:男人和女人在不同状态有对比,所以需要一个对象结构类针对不同状态得到不同反映 访问者模式实现 客户端: 访问者模式 源于GoF《Design Pattern》):表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 访问者模式代码分析 详细分析 1.Visitor 抽象访问者角色,为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具休访问者的具休元素角色,这样访问者就可以通过该元素角色的特定接口直接访问它。     2.ConcreteVisitor.具体访问者角色,实现Visitor声明的接口。     3.Element 定义一个接受访问操作(accept()),它以一个访问者(Visitor)作为参数。 4.ConcreteElement 具体元素,实现了抽象元素(Element)所定义的接受操作接口。 5.ObjectStructure 结构对象角色,这是使用访问者模式必备的角色。它具备以下特性:能枚举它的元素;可以提供一个高层接口以允许访问者访问它的元素;如有需要,可以设计成一个复合对象或者一个聚集(如一个列表或无序集合)。 访问者模式特点  访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。    访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。   访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构。其缺点就是增加新的数据结构很困难。 访问者模式适用情况 1) 一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。    2) 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而你想避免让这些操作“污染”这些对象的类。Visitor模式使得你可以将相关的操作集中起来 定义在一个类中。    3) 当该对象结构被很多应用共享时,用Visitor模式让每个应用仅包含需要用到的操作。    4) 定义对象结构的类很少改变,但经常需要在此结构上定义新的操作。改变对象结构类需要重定义对所有访问者的接口,这可能需要很大的代价。如果对象结构类经常改变,那么可能还是在这些类中定义这些操作较好。 本课程版权归北风网所有 欢迎访问我们的官方网站 * 北风网项目培训 讲师:石曼迪 设计模式——访问者模式 如果加上吃药和买礼物,估计这位爸爸就feng了 abstract class Person { protected string action; public string Action { get { return action; } set { action = value; } } //得到结论或反应 public abstract void

您可能关注的文档

文档评论(0)

老刘忙 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档