我一直在努力寻找实现我的系统的好方法,该系统基本上与字符串中的节目的季节和剧集编号相匹配,您可以在此处查看当前的工作代码:https ://github.com/huddy/tvfilename
我目前正在重写这个库,并想要一种更好的方式来实现匹配的发生方式,目前它的工作方式基本上是:
有一个包含类的文件夹(称为处理程序),每个处理程序都是一个实现接口以确保调用 match() 方法的类;存在,此匹配方法使用存储在该处理程序类(其中有很多)的属性中的正则表达式来尝试匹配季节和剧集。
该类通过将每个处理程序实例化为存储在属性中的数组来加载所有这些处理程序,当我想尝试匹配一些字符串时,该方法将遍历这些对象调用 match(); 然后返回第一个返回 true 的结果集,其中包含与之匹配的季节和剧集。
我真的不喜欢这种方式,这对我来说有点 hacky,我希望设计模式可以提供帮助,我的最终目标是使用最佳实践来做到这一点,我想知道我应该使用哪一个?
存在的其他问题是:
多个处理程序可以匹配一个字符串,因此它们必须是为了防止更贪婪的那些首先匹配,不确定这是否可以解决,因为某些正则表达式模式必须是贪婪的,但可能是一个评分系统,某事这显示了匹配正确可能性的百分比,但我不知道如何实际实现这一点。
如果实例化所有这些处理程序是一种好方法,我不是,速度很重要,但使用最佳实践和坚持设计模式来创建好的、可扩展和可维护的代码是我的最终优先事项。值得注意的是,处理程序类有时会做其他事情,而不仅仅是正则表达式匹配,它们有时会通过删除常用词等来准备要匹配的字符串。
为任何帮助而欢呼比利