`
RednaxelaFX
  • 浏览: 3052687 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

新的DLR tree改变了Visitor的设计

    博客分类:
  • DLR
阅读更多
之前的一帖提到过访问DLR tree所使用的visitor的实现方式,与LINQ相同,都是由一个总的Visit()方法通过每个AST节点上的NodeType属性来判断节点类型并分发到具体的VisitXXX()方法上。

这种设计与常见的Visitor模式并不相同——常见的方式是为需要被访问的类层次中每个类设计一对Accept()/Visit()方法,以此实现double-dispatch的Visitor。在最近更新的IronPython/IronRuby源码中,可以看到ExpressionTreeVisitor已经确认会作为公开API提供。相应的,visitor也从基于NodeType的大switch的设计改回到普通的Visitor模式的设计。

根据观察,这些改变将不会进入IronPython 2.0,而会进入更后面的IronPython 2.1中。
分享到:
评论

相关推荐

    设计模式C++学习之访问者模式(Visitor)

    访问者模式(Visitor)是一种行为设计模式,它允许在不修改对象结构的前提下向对象结构中的元素添加新的操作。这种模式将算法与数据结构分离,使得算法可以独立于数据结构进行变化,增强了系统的可扩展性。 在C++中...

    设计模式系列之visitor

    "设计模式系列之visitor"是一个关于软件设计模式的讨论,特别是关注于“访问者”(Visitor)模式。这个模式是GOF(Gamma, Helm, Johnson, Vlissides)在他们的经典著作《设计模式:可复用面向对象软件的基础》中提出...

    试试visitor设计模式

    也许最开始出现这种模式,是因为另外的原因: 我有一堆数据放在一个库里头,不想让其它人拿着, 如果你要用数据干活,那你就把函数指针给我,我来替你使用这个数据。...然后人们就说,这是visitor模式。

    基于visitor模式和访问者模式的表达式树_求值引擎

    1. **Visitor模式**:这是一个行为设计模式,它允许在不改变元素类的情况下,为对象结构中的元素添加新的操作。在本项目中,Visitor模式被用来处理表达式树的节点。一个`Expression`接口或类定义了接受访问者的操作...

    Fast-Tree-Visitor-Visitor-pattern

    设计一个开发以下两个访问者的访问者:一个访问者,它读取输入文件input.txt,并用文件中的所有单词填充树数据结构。 使用树数据结构将第二位访问者的性能最大化。 使用该树数据结构的插入条件将单词存储在树中。 一...

    C#设计模式之Visitor

    "Visitor"(访问者)设计模式是一种行为模式,它允许我们在不修改对象结构的前提下,为对象添加新的操作。 **二、Visitor模式的核心概念** 1. **元素对象(Element)**:这是被访问的对象,它们构成一个对象结构,...

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

    这种机制使得可以在不改变元素类的情况下,为现有的类层次结构动态添加新的行为。 #### 动机与背景 在软件开发过程中,经常会遇到需求变更导致需要对现有系统进行修改的情况。特别是在处理复杂的类层次结构时,...

    设计模式之访问者模式(Visitor)

    访问者模式是一种行为设计模式,它使你可以在不修改对象结构的情况下,为对象添加新的操作。这种模式的核心在于将数据结构与对这些数据的操作解耦,使得增加新的操作变得容易,同时也允许独立地改变元素类和访问者类...

    Visitor

    访问者模式是一种行为设计模式,它允许我们定义一种在多种不同对象结构中访问、改变或增加新行为的操作方式,而无需改变这些对象的结构。这个模式的核心思想是将数据结构与算法分离,使得我们可以独立地扩展对象的...

    访问者模式VisitorPattern

    访问者模式是一种行为设计模式,它使你能在不修改对象结构的前提下向对象添加新的操作。这种模式常用于处理具有复杂逻辑的对象结构,特别是当你需要对这些对象进行多态操作时。访问者模式将算法与数据结构分离,使得...

    C++ Visitor模式

    Visitor模式是设计模式中的一种行为模式,它在对象结构中引入了一个访问者角色,使得访问者能够对结构中的每个元素进行操作,而不改变元素本身的行为。这种模式允许我们在不修改已有类的情况下增加新的操作,遵循了...

    Visitor模式

    访问者模式(Visitor Pattern)是一种行为设计模式,它使你能在不修改对象结构的前提下,为对象添加新的操作。这种模式在处理具有复杂逻辑和多种类型的对象结构时特别有用,因为它允许你在不改变原有结构的情况下,...

    visitor pattern

    - 需要在不改变元素类的前提下,为元素增加新的操作。 - 想要对一个对象结构进行遍历,同时执行与结构中元素类型相关的操作。 **优缺点** 优点: - 访客模式提供了一种在不修改对象结构的情况下,向对象添加新操作...

    asm-tree(3.0 /3.3)

    `ClassNode`类提供了许多方法,如`accept(Visitor)`,可以接受一个ASM的`Visitor`实例,执行自定义的访问策略。 ASM访问者模式是一种设计模式,它定义了一种一对多的依赖关系,让多个访问者对象可以访问同一层次...

    设计模式-访问者模式(Visitor)

    访问者模式(Visitor)是一种行为设计模式,它允许在不修改对象结构的前提下向对象结构中的元素添加新的操作。这种模式的核心思想是分离了算法和对象结构,使得算法可以在不改变对象结构的情况下独立变化。 访问者...

    Laravel开发-visitor

    在本文中,我们将深入探讨如何使用 Laravel 框架开发一个名为 "visitor" 的系统,该系统能够跟踪和记录网站的访问者行为,包括页面点击量,并为 Laravel 5 应用程序提供自定义的访问计数器功能。Laravel 是一款流行...

    Reflect on the Visitor design pattern

    这个模式的主要目的是将算法与数据结构分离,使得算法可以在不改变对象结构的前提下增加新的操作。在Java中,访问者模式通常涉及到反射(reflection)来实现动态地访问类的方法。 在Java Tip 98中,作者Jeremy ...

    设计模式之访问者模式(Visitor Pattern)

    **访问者模式(Visitor Pattern)**是一种行为设计模式,它提供了一种在不修改对象结构的情况下增加新操作的方法。这种模式的主要思想是将数据结构与算法分离,使得算法可以在不改变对象结构的情况下独立变化。 在...

Global site tag (gtag.js) - Google Analytics