代码之家  ›  专栏  ›  技术社区  ›  j2emanue

使用Visitor模式和单独的类有什么区别?

  •  0
  • j2emanue  · 技术社区  · 6 年前

    我想知道Visitor模式和使用静态方法分开执行代码有什么区别。

    让我们看一个我可以称之为访问者模式的示例:

      new AnalyticsVisitor.accept(myClass); 
    

    这是从 myClass

      new AnalyticsManager.execute(myClass);
    

    我也做到了吗?

    1. 我可以将信息添加到遗留代码中而无需更改它。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Oddthinking    6 年前

    这个问题还是有点困惑。我怀疑你还没有理解访问者模式的目标。

    As discussed here


    visitor模式所基于的技术是双重分派,所以当你说“除非双重分派,否则为什么要使用visitor模式?”你实际上是在说“为什么要使用访问者模式?”


    对于真正的访问者模式,提供的代码似乎是向后的。应该是:

    my_datastructure.accept(analytics_visitor);
    

    analytics_visitor 从MyDataStructureVisitor继承,并为数据结构可以容纳的每个元素类型提供单独的方法。


    至于成就:

    1. 目前还不清楚将访问者模式应用于多个数据结构意味着什么。每个访问者类都与一个数据结构相关联。

    2. 我们的目标不是将“info”添加到遗留代码中。这是要补充的 操作 到遗留代码。