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