`
dreamstone
  • 浏览: 288400 次
  • 来自: ...
文章分类
社区版块
存档分类

visitor模式概念------------------- visitor模式进一步

阅读更多

visitor模式理论及学术概念-------------------   visitor模式进一步
一,访问者模式的角色:
抽象访问者:声明一个或者多个访问操作,形成所有的具体元素都要实现的接口
具体访问者:实现抽象访问者所声明的接口
抽象节点:声明一个接受操作,接受一个访问者对象作为参量
具体节点:实现了抽象元素所规定的接受操作
结构对象:遍历结构中的所有元素,类似List Set等
二,在什么情况下应当使用访问者模式
访问者模式应该用在被访问类结构比较稳定的时候,换言之系统很少出现增加新节点的
情况。因为访问者模式对开-闭原则的支持并不好,访问者模式允许在节点中加入方法,
是倾斜的开闭原则,类似抽象工厂。
三,访问者模式的缺点:
1,增加节点困难
2,破坏了封装
因为访问者模式的缺点和复杂性,很多设计师反对使用访问者模式。个人感觉应该在了解的
情况下考虑衡量选择。

最后的部分:
看完本文,如果你对visitor模式有更多的兴趣,想了解更多请看如下几篇文章。
1,静态分派,动态分派,多分派,单分派 --------------   visitor模式准备
2,访问差异类型的集合类 ------------------------   visitor模式入门
3,visitor模式理论及学术概念-------------------   visitor模式进一步(本文)
4,重载overloading和覆写overriding哪个更早执行--   visitor帮助篇
虽然排列顺序是1,2,3,4 但是我个人建议的学习方式是2,1,3,4因为这个顺序更方便一般人理解

 

分享到:
评论

相关推荐

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **3.8 Visitor模式**:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 - **应用场景**:一个对象结构包含很多类对象,它们有不同的接口,而你想...

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码

    - **4.3 也谈double dispatch(双分派):: Visitor模式**:通过解释双分派的概念,进一步阐述了Visitor模式的工作原理及其优势。 - **4.4 为什么使用设计模式——从Singleton模式谈起**:通过分析Singleton模式的...

    C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式

    **Visitor模式**提供了一种解决方案,即通过将操作封装在访问者对象中,可以独立于元素类层次结构地为系统添加新的行为。这样不仅避免了对现有类结构的修改,还能保持代码的清晰性和可扩展性。 #### 结构与组成部分...

    GOF-设计模式-Design Patterns-英文原版-高清-有目录-有页码

    **设计模式**(Design Patterns)是软件工程中的一个重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。本章节将从多个角度对设计模式进行深入探讨。 #### 二、设计模式的基本定义 ...

    设计模式系列之visitor

    接下来我们将深入探讨该模式的概念、实现及应用场景。 访问者模式的核心思想是将数据结构与对这些数据结构的操作分离。它允许我们添加新的操作到已存在的类层次结构中,而无需改变这些类本身。这种模式通常在需要对...

    java与模式源码-javapatterns:java与模式---源代码

    责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、...Strategy)、模板方法模式(Template Method)、访问者模式(Visitor)...

    极客学院java-23种设计模式

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可复用性。在Java领域,23种设计模式被广泛接受,它们分为三大类:创建型、结构型和行为型。下面,...

    设计模式精解-GoF 23种设计模式解析 c++实现

    8. **Visitor模式**:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 9. **Chain of Responsibility模式**:使多个对象都有机会处理请求,从而避免...

    Laravel开发-visitor

    - 例如,可以计算每日、每周或每月的访问量,找出最受欢迎的页面,或者追踪用户访问模式。 7. **路由与视图**: - 在路由配置中,可以将中间件应用到特定的路由上,只记录特定页面的访问。 - 视图中,可以显示...

    head first 设计模式

    第12章介绍如何将两个以上的设计模式结合起来成为新的设计模式(例如著名的MVC模式),作者称其为复合设计模式(这是作者自创的名称,并非四人组的标准名词),第13章介绍如何进一步学习设计模式,如何发觉新的设计模式...

    设计模式C++版(pdf版)

    Visitor模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 - **适用场景**:对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施...

    C#设计模式大全

    #### 访问者(Visitor)模式 访问者模式是一个行为型设计模式,它允许你为一组对象结构添加新的操作,无需修改对象的类。 - **结构**:包含访问者接口、具体访问者类、元素接口以及对象结构类。 - **示例性源代码*...

    23种JAVA设计模式经典(推荐必读).pdf

    Java设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,旨在提高代码的可...通过阅读“23种JAVA设计模式经典”,你可以深入理解每个模式的原理、应用场景以及优缺点,进一步提升自己的编程能力。

    C++设计模式

    - **Visitor模式**:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 - **Chain of Responsibility模式**:为了避免请求发送者与多个请求处理者耦合...

Global site tag (gtag.js) - Google Analytics