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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Java Pattern类使用工厂方法而不是构造函数?相关的知识,希望对你有一定的参考价值。

general case有一个很好的讨论。

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

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

答案

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

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

另一答案

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

另一答案

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

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

另一答案

使用Pattern的工厂方法最终也可以允许使用第三方插件正则表达式实现。不幸的是,Sun没有实现使用工厂方法(插件功能,缓存)时可以获得的任何功能。

以上是关于为什么Java Pattern类使用工厂方法而不是构造函数?的主要内容,如果未能解决你的问题,请参考以下文章

设计模式工厂模式(Factory Pattern)

设计模式工厂模式(Factory Pattern)

Java设计模式之工厂模式(Factory Pattern)

Java设计模式之工厂模式(Factory Pattern)

Java 设计模式-工厂方法模式 (FactoryMethod Pattern)

工厂模式(Factory Method Pattern)