- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当以面向对象的方式实现大海捞针搜索时,基本上有三种选择:
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/
我有一个函数,它接受一个字符串(the haystack)和一个字符串数组(the needles),如果至少有一个 needle 是 haystack 的子串,则返回 true。编写它并没有花太多时
所以给定“针”和“这里有针但没有这个针大海捞针” 我写了 def find_needle(n,h): count = 0 words = h.split(" ") for wo
我正在尝试创建一个程序来确定是否在数组中找到用户输入。 然后我要输出整数在数组中的位置。 看起来我的程序没有从我的主程序中提取任何内容。 这是程序: public static int returnI
我有一个 C 程序,它从命令行获取参数。以相反的顺序打印参数。并在大海捞针中找到针/子串。我有以下代码: 哑巴.c #include #include #include #include "Du
这个问题在这里已经有了答案: Compare two objects in Java with possible null values (12 个答案) What is a NullPointer
我是一名优秀的程序员,十分优秀!