在我的搜索页面要求中,我需要执行以下操作。
用户执行搜索的文本
(例如20k +手机+三星)
搜索优化的排序
(对于特定用户:细化是按照“价格,公司,交货”的顺序进行的,而对于其他一些用户来说,它可以是'交货,价格,公司'。这个类将处理这个问题)
当结果较少时放宽一些参数。
(如果某些逻辑结果较少(比如在价格范围内略有变化)将会应用。增加结果数量)
搜索结果缓存
(缓存搜索结果)
对于这些操作,我创建了一个单独的类。 我想知道为此创建类是正确的还是在一些常见的搜索功能类中创建一个函数,说“seacrhUtility”就足够了。
答案 0 :(得分:2)
由于您的问题的其中一个标记是OOP,而OOP的SOLID原则之一是Single responsibility principle,因此尝试遵循SRP可能是个好主意。
SRP的关键点是“责任”被定义为“改变的理由”。
从你描述的四个点听起来它们都可以独立改变,所以你可以有一个实现每个点的类。
根据具体细节,您可能只想在一个班级中进行实际搜索和排序,因为这两个可能只被视为一个“责任”。
参数的放松听起来像是与搜索操作没有直接关系的东西,可能会变化并演变成非常复杂的东西。这可能应该被设计为一个单独的类,甚至可能被设计为Strategy类。
现在缓存绝对应该作为一个单独的类来实现,因为它是一个完全不同的职责。请考虑您可能必须更改缓存的方式或缓存结果的位置,并且您不希望为此触及搜索算法。
另一方面,如果您的应用程序相对简单,并且不需要更改,并且如果您可以在四个函数中实现所有四个点,每个函数少于4-5行代码 - 您可能应该这样做。此外,如果项目的其余部分仅使用函数或使用整体对象构建,那么坚持使用该方法可能会更好。使用常识。
答案 1 :(得分:1)
使用类也很酷,但我个人只想使用一个函数,所有需要的函数都可以作为一些函数参数传递,函数会在几次静态操作后返回最终选中的记录,就是这样。
当我需要在不同的时间(我的代码的不同部分)需要多次操作时,我会在我的输入上或者当有大量代码或函数将被使用时使用类...