第27章访问者模式.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
教材 指定教材: 刘伟. 设计模式. 北京:清华大学出版社, 2011. 辅导教材(实验教材): 刘伟. 设计模式实训教程. 北京:清华大学出版社, 2012. 第27章 访问者模式 本章教学内容 访问者模式 模式动机与定义 模式结构与分析 模式实例与解析 模式效果与应用 模式扩展 访问者模式 模式动机 对于系统中的某些对象,它们存储在同一个集合中,且具有不同的类型,而且对于该集合中的对象,可以接受一类称为访问者的对象来访问,而且不同的访问者其访问方式有所不同,访问者模式为解决这类问题而诞生。 访问者模式 模式动机 访问者模式 模式动机 在实际使用时,对同一集合对象的操作并不是唯一的,对相同的元素对象可能存在多种不同的操作方式。 而且这些操作方式并不稳定,可能还需要增加新的操作,以满足新的业务需求。 此时,访问者模式就是一个值得考虑的解决方案。 访问者模式的目的是封装一些施加于某种数据结构元素之上的操作,一旦这些操作需要修改的话,接受这个操作的数据结构可以保持不变。为不同类型的元素提供多种访问操作方式,且可以在不修改原有系统的情况下增加新的操作方式,这就是访问者模式的模式动机。 访问者模式 模式定义 访问者模式(Visitor Pattern):表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式。 访问者模式 模式定义 Visitor Pattern: Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates. Frequency of use: low 访问者模式 模式结构 访问者模式 模式结构 访问者模式包含如下角色: Vistor: 抽象访问者 ConcreteVisitor: 具体访问者 Element: 抽象元素 ConcreteElement: 具体元素 ObjectStructure: 对象结构 访问者模式 模式分析 访问者模式中对象结构存储了不同类型的元素对象,以供不同访问者访问。 访问者模式包括两个层次结构,一个是访问者层次结构,提供了抽象访问者和具体访问者,一个是元素层次结构,提供了抽象元素和具体元素。 相同的访问者可以以不同的方式访问不同的元素,相同的元素可以接受不同访问者以不同访问方式访问。在访问者模式中,增加新的访问者无须修改原有系统,系统具有较好的可扩展性。 访问者模式 模式分析 典型的抽象访问者类代码如下所示: public abstract class Visitor { public abstract void visit(ConcreteElementA elementA); public abstract void visit(ConcreteElementB elementB); public void visit(ConcreteElementC elementC) { //元素ConcreteElementC操作代码 } } 访问者模式 模式分析 典型的具体访问者类代码如下所示: public class ConcreteVisitor extends Visitor { public void visit(ConcreteElementA elementA) { //元素ConcreteElementA操作代码 } public void visit(ConcreteElementB elementB) { //元素ConcreteElementB操作代码 } } 访问者模式 模式分析 典型的抽象元素类代码如下所示: public interface Element { public void accept(Visitor visitor); } 访问者模式 模式分析 典型的具体元素类代码如下所示: public class ConcreteElementA implements Element { public void accept(Visitor visitor) { visitor.visit(this); } public void operationA() { //业务方法 } } 访问者模式 模式分析 典型的对象结构类代码如下所示: public class ObjectStru

文档评论(0)

339910001 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档