我正在尝试使用简单的模式匹配分析来查找程序中的所有工厂方法? 目前,我只为方法m设置了一些简单的条件: 1. m的返回类型不为null,也不是主类型; 2. m的return语句给出一个在这个方法中获得新表达式的值。
使用上述条件,我可以获得许多工厂方法的候选方法。但显然,条件还不够。可以添加任何其他条件以获得更准确的工厂方法。
感谢。
答案 0 :(得分:3)
这听起来对我来说是一项不可能完成的任务。例如,即使您当前的标准也不正确,恕我直言。工厂方法返回某个类的实例,但
Integer.valueOf
所示),new
运算符您可以搜索常用的名称,例如“createXxx”,“newXxx”或“valueOf”,但这当然会返回潜在的工厂方法,而且会遗漏很多。
工厂模式只是一种模式。它不是那么僵硬,你可以自动识别它,恕我直言。
答案 1 :(得分:1)
我认为这不可能做到,因为这样做会包括解决halting problem。限制自己进行模式匹配(我假设在字符串上)只会让它变得更难。