【问题标题】:Should Search Helper things be functions or class [closed]Search Helper 应该是函数还是类[关闭]
【发布时间】:2012-09-09 00:53:23
【问题描述】:

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

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

  2. 搜索优化的顺序
    (对于特定用户:细化的顺序是“价格、公司、交货”,而对于其他一些用户,它可以是“交货、价格、公司”。这个类将处理这个)

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

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

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

【问题讨论】:

    标签: php oop design-patterns


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      为此使用类也很酷,但我个人只会使用一个函数,您的所有需求都可以作为几个函数参数传递,该函数会在几个静态操作后返回您最终选择的记录,就是这样。

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

      【讨论】:

      • 谁能列出 +ve 1. 使用类而不是函数 2. 使用函数而不是类
      • @IntoPuzzlesTottaly 我不明白你的意思是什么?如果你的意思是什么时候使用类和什么时候使用函数,也许也可以看看这个:stackoverflow.com/questions/2122123/…
      • 我问的是我的案子,不是一般意义上的
      猜你喜欢
      • 2013-06-22
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 1970-01-01
      • 2012-06-20
      相关资源
      最近更新 更多