gpt4 book ai didi

oop - 如何大海捞针?

转载 作者:行者123 更新时间:2023-12-03 05:21:16 24 4
gpt4 key购买 nike

当以面向对象的方式实现大海捞针搜索时,基本上有三种选择:

1. needle.find(haystack)

2. haystack.find(needle)

3. searcher.find(needle, haystack)

你更喜欢哪一个,为什么?

我知道有些人更喜欢第二种选择,因为它避免了引入第三个对象。然而,我不禁觉得第三种方法在概念上更“正确”,至少如果你的目标是建模“现实世界”。

您认为在哪些情况下引入辅助对象(例如本例中的搜索器)是合理的,何时应避免引入它们?

最佳答案

在这三个选项中,我更喜欢选项#3。

Single Responsibility Principle让我不想在我的 DTO 或模型上添加搜索功能。他们的职责是成为数据,而不是找到自己,针也不应该知道大海捞针,大海捞针也不应该知道针。

无论如何,我认为大多数面向对象实践者需要很长时间才能理解为什么#3 是最好的选择。在我真正理解它之前,我可能已经研究了 OO 十年。

@wilhelmtell,C++ 是极少数具有模板特化的语言之一,可以使此类系统真正运行。对于大多数语言来说,通用的“查找”方法将是一个可怕的想法。

关于oop - 如何大海捞针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23755/

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