【发布时间】:2015-05-27 15:23:00
【问题描述】:
当我读到访问者模式时,它说像
允许在运行时将一个或多个操作应用于一组对象,从而将操作与对象结构分离。
如果我的假设是正确的,我们将定义一个抽象访问者,其中包含处理每个对象的方法。然后具体的访问者将实现这些方法中的每一个。通过这种方式,我们将处理对象的逻辑从 Object 类分离到访问者实现。
我怀疑如果我们只有一个访问者实现,我们真的需要使用这种模式吗?我们不能把实现放在每个 Object 类中直接调用吗?如果我在两者之间遗漏了什么,请纠正我。
【问题讨论】:
-
是的,你是对的。事实上,一般来说,当你有一个只有一个子类的基类时,就会出现可疑情况。对于访客来说尤其如此。
-
访问者很复杂,更难调试。在需要之前不要应用模式。我可以在我家的正门放一扇旋转门,但这比普通的门要麻烦得多。如果内外温差大,人来人往,旋转门就有好处。首先应用的设计模式是 KISS aka YAGNI。
标签: design-patterns visitor-pattern