静态工厂方法或创建方法

时间:2009-04-06 12:21:45

标签: design-patterns terminology definition

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

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

 private A() {
 }
}

Effective Java(第1项)和wikipedia article上,我发现这称为静态工厂方法(某种工厂方法

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

真相在哪里?

4 个答案:

答案 0 :(得分:2)

阅读此discussion工厂方法。

  

FactoryMethodPatternFactoryMethodCreationMethod不同。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

Creation Method是一种静态或非静态方法,用于创建类的实例。 Factory Method是在类层次结构中定义和实现的方法,创建具有多态性。

答案 3 :(得分:0)

嗯,术语通常因作者而异,所以我不会太担心这个。

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

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