工厂模式可以只用于一个用户定义的 class 而没有子 class 吗

Can factory pattern be used for only one user defined class and no subclasses

我正在尝试为用户定义的 class 实现基本工厂模式。例如 class 货币,它允许用户输入货币名称、汇率等。原因是我希望允许添加未来子 classes 的可能性。

我不想为每种可能的货币创建子class,因为详细信息是由用户输入的,而且这些货币也可能是虚构的。我也没有任何其他 classes.

例如,这是我的代码,其中用户需要为要创建的货币填写 class 的参数。这一切都是在单独的 class 中完成的,它们被放在一个列表中:

public String code;
public String name;
public boolean major;

public Currency(String code, String name, boolean major) {
    this.code = code;
    this.name = name;
    this.major = major;
}

我想我一定是遗漏了什么,但我想不通。工厂模式可能不应该以这种方式使用?

这是我第一次将这种设计模式与依赖注入结合使用。 感谢您的帮助。

我认为您正在寻找的是 static factory method and not the Factory Method Pattern,即您可能只需要这个,

private Currency(String code, String name, boolean major) {
    this.code = code;
    this.name = name;
    this.major = major;
}

public static Currency of(String code, String name, boolean major) {
    return new Currency(code, name, major);
}

如果其中一些是正确的,您将需要工厂设计模式:

  1. 你的构造逻辑很复杂。
  2. 你有一个接口,在 运行 的时候你想要 return 一个特定的实现,你 select 基于一些逻辑。
  3. 您想控制 returned 对象的生命周期。

恕我直言,除非您想要上述任何一种并且只想构造一个基于用户输入的对象,否则静态工厂方法就是您所需要的。