gpt4 book ai didi

design-patterns - 访问者模式的常见用例有哪些?

转载 作者:行者123 更新时间:2023-12-02 03:32:04 43 4
gpt4 key购买 nike

我正在寻找访客模式的常见用例。我可以在互联网上找到一些示例,但它们相当基础,只能解释概念,而不是当这种模式真正可以节省您的时间/生命时。

您有使用这种模式的真实示例吗? (例如,在 Github 中的现有 java 项目中)

我不清楚它大规模解决了什么问题以及为什么开发人员可能会使用它?

最佳答案

当您想要向对象发送消息(即调用方法),但由于编译器的类型检查而无法发送消息时,访问者模式非常有用。例如,该对象被声明为属于类型(接口(interface))Animal,该类型只有方法say(),并且您想要调用方法smile() 在该对象上。

是的,您可以修改接口(interface)Animal(添加方法smile()),但由于某种原因,您希望保持接口(interface)稳定。如果将来您需要更多方法,例如 go()walk() ...?

是的,您可以将 Animal 对象转换为您想要的每种特定类型,例如DogCat ...但出于某种原因,您希望保持此调用代码稳定,而不关心特定的动物类型。如果将来你有更多的动物类型,如大象 ...?毕竟,调用代码只是想让对象微笑,并不想在对象出现新的特定类型时进行修改。

所以,让我们将所有这些不稳定的事情委托(delegate)给访问者。您将拥有 SmileVisitorGoVisitorWalkVisitor ...以及 visit(Dog) 方法访问(Cat) ...并像这样使用它们:

new SmileVisitor().visit(animal);

P/S:我认为您可以找到一些自行保持源代码某些部分稳定的常见用例。

关于design-patterns - 访问者模式的常见用例有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51560060/

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