gpt4 book ai didi

php - 哪个是我的 PHP 应用程序的正确设计模式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:09 25 4
gpt4 key购买 nike

我一直在努力寻找实现我的系统的好方法,该系统基本上匹配字符串中节目的季节和剧集编号,您可以在此处查看当前的工作代码:https://github.com/huddy/tvfilename

我目前正在重写这个库,想要一种更好的方式来实现匹配是如何发生的,目前它的工作方式基本上是:

有一个文件夹,里面有类(称为处理程序),每个处理程序都是一个实现接口(interface)的类,以确保调用 match() 的方法;存在,此匹配方法使用存储在该处理程序类(其中有很多)的属性中的正则表达式来尝试匹配季节和剧集。

该类通过将每个处理程序实例化为存储在属性中的数组来加载所有这些处理程序,当我想尝试匹配一些字符串时,该方法调用 match() 遍历这些对象;并且第一个返回 true 的结果将返回到结果集中,并包含它匹配的季节和剧集。

我真的不喜欢这种做事的方式,这对我来说有点老套,我希望设计模式能有所帮助,我的最终目标是使用最佳实践来做到这一点,我想知道我应该采用哪一种采用?

其他存在的问题是:

  • 多个处理程序可以匹配一个字符串,因此它们必须按顺序排列以防止首先匹配更贪婪的处理程序,不确定这是否可以解决,因为某些正则表达式模式必须是贪婪的,但是可能是一个评分系统,显示匹配正确可能性的百分比,但我不知道如何实际实现它。

  • 我不确定实例化所有这些处理程序是否是一个好方法,速度很重要,但使用最佳实践并坚持设计模式来创建良好、可扩展和可维护的代码是我的首要任务。值得注意的是,处理程序类有时会做其他事情,而不仅仅是正则表达式匹配,它们有时会通过删除常用词等来准备要匹配的字符串。

欢迎任何帮助比利

最佳答案

为每个正则表达式创建一个类是非常低效的,你在这里混淆了类和数据。您可以将所有正则表达式存储在一个配置数组或一个单独的类或 XML 文件中——没关系。然后单个方法可以接受所有正则表达式,遍历它们并执行匹配。如果季节并不总是匹配 [1],您可以使用命名子模式 - 这将解决该问题。

至于你的模式顺序问题,你可以简单地将所有模式放在你喜欢的顺序 - 从最具体的到更一般的。

关于php - 哪个是我的 PHP 应用程序的正确设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11236358/

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