Pattern类比JDK中的许多内容都要新。因此,我认为他们采用了使用工厂方法而不是公共构造函数的更现代方法。你不能真正地将工厂方法适配到现有类中。
一般来说,使用工厂方法而不是构造函数没有太多理由,所以我认为就是这样。工厂方法允许你抽象对象的创建,这非常有用。
为什么你们会使用相同的正则表达式创建两个Pattern
实例?静态创建方法可以使实现在被多次请求相同正则表达式时可能缓存Pattern
,有时返回相同的对象。编译Pattern
可能很昂贵。此外,如果需要额外的compile
方法(比如不同的语法),可以给它们命名不同的名称,而不是混淆的构造函数。
使用Pattern
的工厂方法也可以最终允许使用第三方插件正则表达式实现。不幸的是,Sun公司没有实现任何使用工厂方法时可能得到的功能(插件能力、缓存)。