2

我想知道这种结构的正确定义:

class A {
 public static A create() {
    return new A();
 }

 private A() {
 }
}

Effective Java (Item 1) 和维基百科文章中,我发现这被称为静态工厂方法(某种工厂方法)。

但是在阅读Refactoring to Patterns(第 6 章)时,我遇到了同样的构造,称为Creation Method。此外,还有一个注意事项,它不应该与工厂方法模式混淆。

真理在哪里?

4

4 回答 4

2

阅读有关工厂方法的讨论

FactoryMethodPatternFactoryMethodCreationMethod不同。

于 2009-04-06T12:29:34.430 回答
1

一种方法是调用无参数方法创建方法和参数化(例如通过枚举) -工厂方法。因为工厂更强大,可以创建不同类型的对象。

如果您使用无参数方法,则必须在别处决定要调用哪个类的方法。使用参数化方法,您可以将此逻辑传递给方法本身。所以后者(factory)也自己决定要创建哪个类对象。

于 2009-04-06T12:25:51.303 回答
1

创建方法是创建类实例的静态或非静态方法。工厂方法是在类层次结构中定义和实现的方法,其创建具有多态性。

于 2012-01-29T12:59:00.987 回答
0

好吧,作者之间的术语经常会有所不同,所以我不会太担心这一点。

但是,我认为“重构为模式”警告不要将其称为“工厂方法”,因为存在工厂方法模式。由于工厂方法模式不仅仅是一种工厂方法,因此他们提出了不同的名称以避免混淆。

我想你也可以称它为“简单的静态工厂”,但这有点罗嗦(而且不标准)。

于 2009-04-06T12:29:18.080 回答