gpt4 book ai didi

design-patterns - 装饰者设计模式和访问者设计模式的区别

转载 作者:行者123 更新时间:2023-12-03 13:20:23 25 4
gpt4 key购买 nike

我相信了解装饰者和访问者设计模式的意图。

虽然我可以列出以下差异

  • 装饰者在物体上工作,访客在复合结构上工作,
  • 装饰者是结构设计模式,访问者是行为设计​​模式。

  • 当我深入思考时,我无法说服自己两者之间的真正区别是什么。

    最佳答案

    好吧,它们实际上是完全不同的!

    当您想使用一些新的、或多或少透明的功能(如验证或缓存)来增强现有对象时,您可以使用装饰器。请参见此处的示例: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.



    是的,但它并没有真正帮助理解它们是如何工作的?

    也可以看看
  • Examples of GoF Design Patterns in Java's core libraries
  • What's a suitable return type for this Java method?
  • 关于design-patterns - 装饰者设计模式和访问者设计模式的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9363582/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com