gpt4 book ai didi

php - 为什么不用工厂模式进行排序?

转载 作者:行者123 更新时间:2023-12-04 18:23:55 26 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




10年前关闭。




在运行时,根据用户行为和历史,我需要执行排序操作。就我而言,SortByDate/SortByDemand/SortByConsumption只会返回字符串,或者我们可以说 order by 子句(可能很复杂)。

在大多数论坛中,我发现应该使用策略模式进行排序。

enter image description here

我在这里附上了策略模式的图像。 Util 类将调用三个类之一的对象,即 SortByDate/SortByDemand/SortByConsumption

所以每次定义新的排序方法时,我都需要更改util类并定义一个新的Strategy。

enter image description here

但是,如果我使用工厂实现它,则 util 类只需要调用工厂,它将负责调用哪个类。所以我认为我应该使用工厂。

但是,我读过该策略是满足此类需求的最佳模式。为什么策略模式在这里更好?

最佳答案

你所做的不是工厂模式,而是两者的混合,这不清楚,在我看来是错误的。

在第二个示例中,类名错误且令人困惑。 SortByDateFactory不像工厂(它不生产任何东西),但它确实像一个策略。因此,它应该符合一个策略接口(interface)。

另一方面,在第一个示例中,UtilClass表现得像你想要制造的工厂。所以,我建议保留第一个示例,但重命名 UtilClassSortStrategyFactory .

关于php - 为什么不用工厂模式进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139073/

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