我想知道访问者模式与使用静态方法执行代码分离之间的区别。
让我们来看看一个例子,在这个例子中,我可以调用访问者模式:
new AnalyticsVisitor.accept(myClass); 例如,当从myClass调用时,就会将工作转移到访问者中执行。如果内存密集,它甚至会垃圾收集得更快。
现在让我们来看看如何使用一种简单的方法来实现大致相同的目标:
new AnalyticsManager.execute(myClass);我也取得了同样的成就吗?
那么,为什么要使用访问者模式而不是只使用类(除非用于双重分派)?
发布于 2018-08-29 06:25:17
这个问题还有点困惑。我怀疑你还没有理解访客模式的目标。
As discussed here访问者模式在具有相对稳定的复杂数据结构(如解析树)时非常有用(就开发而言),但是您希望能够继续对其所有元素添加新的操作。这是笨拙的标准OO技术。
访问者模式所基于的技术是双重调度,所以当您说“为什么要使用访问者模式,除非用于双重调度?”你实际上是在说:“为什么要使用访问者模式?”
您的示例代码只包含客户端,因此不清楚您的新技术实际提供了什么。
对于真正的访问者模式,所提供的代码似乎是向后的。它应该是:
my_datastructure.accept(analytics_visitor);其中,analytics_visitor继承自MyDataStructureVisitor,并为数据结构可以容纳的每个元素类型提供单独的方法。
至于取得的成就:
https://stackoverflow.com/questions/52068876
复制相似问题