1

在我的搜索页面要求中,我需要执行以下操作。

  1. 用户执行搜索的文本
    (例如 20k+ 手机 + 三星)

  2. 搜索细化
    的顺序(对于特定用户:细化按“价格、公司、交货”的顺序排列,对于其他用户,它可以是“交货、价格、公司”。此类将处理此问题)

  3. 当结果较少时放宽一些参数。
    (如果结果因某种逻辑而减少(比如价格范围略有变化)将被应用。增加结果数)

  4. 搜索结果缓存
    (缓存搜索结果)

对于这些操作,我创建了一个单独的类。我想知道为此创建类或在一些常见的搜索函数类中创建一个函数是否正确,说“seacrhUtility”应该足够了。

4

2 回答 2

2

由于您问题的标签之一是 OOP,而 OOP 的SOLID原则之一是单一职责原则,因此尝试遵循 SRP 可能是一个好主意。

SRP 的关键点是将“责任”定义为“改变的理由”。

根据您的描述,这四点听起来像是它们都可以独立更改,因此您可以有一个类来实现每一点。

根据确切的细节,您可能希望只在一类中进行实际搜索和排序,因为这两者可能只是一种“责任”。

参数的放松听起来像是与搜索操作没有直接关系的东西,它可能会改变并演变成相当复杂的东西。这可能应该被设计为一个单独的类,甚至可能是一个Strategy类。

现在缓存绝对应该作为一个单独的类来实现,因为它是一个完全不同的职责。考虑到您可能必须更改缓存方式或缓存结果的位置,并且您不想为此触及搜索算法。

另一方面,如果您的应用程序相对简单,并且不需要更改,并且您可以在四个少于 4-5 行代码的函数中实现所有四个点 - 您可能应该这样做。此外,如果您的项目的其余部分是仅使用函数或使用单体对象构建的,那么坚持这种方法可能会更好。使用常识。

于 2012-09-16T18:35:58.393 回答
1

为此使用一个类也很酷,但我个人只会使用一个函数,您可以将所有需要作为几个函数参数传递,并且该函数将在几个静态操作后返回您最终选择的记录,仅此而已。

当我需要在不同时间(我的代码的不同部分)对我的输入执行多个操作或者当有很多代码或函数要使用时,我会使用类......

于 2012-09-16T17:03:30.837 回答