我相信了解装饰者和访问者设计模式的意图。
虽然我可以列出以下差异
当我深入思考时,我无法说服自己两者之间的真正区别是什么。
请您参考如下方法:
好吧,它们实际上是完全不同的!
当您想使用一些新的、或多或少透明的功能(如验证或缓存)来增强现有对象时,您可以使用装饰器。请参见此处的示例:Should I extend ArrayList to add attributes that isn't null?
另一方面,当您具有类的层次结构并希望基于具体类型运行不同的方法但避免 instanceof 时使用访问者。或 typeof运营商。查看真实示例:Is This Use of the "instanceof" Operator Considered Bad Design?
Decorator works on an object, Visitor works on composite structure,
访问者在继承层次结构上工作,复合是一种不同的 GoF 设计模式。
Decorator is Structural design pattern, visitor is Behavioral design pattern.
是的,但它并没有真正帮助理解它们是如何工作的?
也可以看看


