Design patterns 静态工厂方法还是创建方法

Design patterns 静态工厂方法还是创建方法,design-patterns,terminology,definition,Design Patterns,Terminology,Definition,我想知道这种结构的正确定义: class A { public static A create() { return new A(); } private A() { } } 在(第1项)和上,我发现这被称为静态工厂方法(某种工厂方法) 但在阅读(第6章)的过程中,我遇到了同样的结构,叫做创造方法。还有一点需要注意的是,它不应该与工厂方法模式混淆 真相在哪里?一种方法是调用无参数方法创建方法和参数化(例如通过枚举)工厂方法。因为工厂更强大,可以创建不同类型的对象 如果使用无参

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

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

 private A() {
 }
}
在(第1项)和上,我发现这被称为静态工厂方法(某种工厂方法)

但在阅读(第6章)的过程中,我遇到了同样的结构,叫做创造方法。还有一点需要注意的是,它不应该与工厂方法模式混淆


真相在哪里?

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


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

好吧,术语常常因作者而异,所以我不太担心这个问题

然而,我想,“重构到模式”警告不要将其称为“工厂方法”,因为存在一个错误。由于工厂方法模式不仅仅是一个工厂方法,他们建议使用不同的名称以避免混淆

我想你也可以称之为“简单的静态工厂”,但这有点冗长(而且是非标准的)。

阅读一下这种工厂方法

与或不同


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

很抱歉,没有从您的帖子中了解创建方法和Factory方法之间的实际差异。您能再解释一遍吗?要调用创建方法,您需要决定调用哪个类的方法-B::Create()或C::Create()。使用factory方法,您只需创建一个类F::Create(parameter),其中一个参数是某个枚举值,例如,fcatary自行决定要创建哪个类对象。