我想知道这种结构的正确定义:
class A {
public static A create() {
return new A();
}
private A() {
}
}
在Effective Java(第1项)和wikipedia article上,我发现这称为静态工厂方法(某种工厂方法)
但在阅读Refactoring to Patterns(第6章)时,我遇到了与创建方法相同的构造。此外,还有一个注意事项,它不应该与工厂方法模式混淆。
真相在哪里?
答案 0 :(得分:2)
答案 1 :(得分:1)
一种方法是调用无参数方法创建方法并参数化(例如通过枚举) - 工厂方法。因为工厂更强大,可以创建不同类型的对象。
如果使用无参数方法,则必须在其他地方决定调用哪个类的方法。使用参数化方法,您可以将此逻辑传递给方法本身。所以后者( factory )也自己决定要创建哪个类对象。
答案 2 :(得分:1)
Creation Method是一种静态或非静态方法,用于创建类的实例。 Factory Method是在类层次结构中定义和实现的方法,创建具有多态性。
答案 3 :(得分:0)
嗯,术语通常因作者而异,所以我不会太担心这个。
然而,我认为“重构模式”警告不要将其称为“工厂方法”,因为存在factory method pattern。由于工厂方法模式不仅仅是工厂方法,因此它们提出了不同的名称以避免混淆。
我想你也可以把它称为“简单的静态工厂”,但这有点罗嗦(和非标准)。