为什么Java Pattern类使用工厂方法而不是构造函数?

Ala*_*lan 6 java constructor factory

一般情况下,对此进行了很好的讨论.

但是,我特别想知道为什么Pattern类使用compile静态方法来创建对象,而不是构造函数?

对我来说似乎更直观地使用构造函数.

cle*_*tus 9

Pattern类比JDK中的许多东西更新.因此我相信他们采用了更现代的方法来使用工厂方法而不是旧的公共建设者方法.您无法真正将工厂方法改造为现有类.

一般来说,使用构造函数而不是工厂方法没有太多理由,所以我认为这就是它的全部内容.工厂方法允许您抽象对象创建,这可能非常有用.


Tom*_*ine 6

你为什么要Pattern使用同一个正则表达式的两个实例?静态创建方法允许实现潜在地缓存,Pattern如果多次请求相同的正则表达式,有时会返回相同的对象.编译Patterns可能很昂贵.此外,如果需要其他compile方法(比如说不同的语法),可以给它们赋予不同的名称,而不是令人困惑的重载构造函数集.


Kev*_*Day 5

当可能以可能影响构造函数的方式更改底层实现时,使用静态工厂模式.简而言之,工厂允许库维护人员具有显着的灵活性,而不受构造方面的二进制和源兼容性的束缚.

有关详细信息,请参阅http://en.wikipedia.org/wiki/Factory_method_pattern - 尤其是"其他好处和变体"部分.