工厂模式只能用于一个用户定义的类,而不能用于子类

问题描述 投票:0回答:1

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

我不想为每种可能的货币创建子类,因为用户输入了详细信息,并且这些货币也可能是虚构的。我也没有其他班级。

例如,这是我的代码,要求用户在其中输入要创建货币的类的参数。这些都是在单独的类中完成的,它们被放置在列表中:

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;
}

我想我一定会丢失一些东西,但我无法弄清楚。是否有可能不应该以这种方式使用工厂模式?

这是我第一次同时使用这种设计模式和依赖注入。谢谢您的帮助。

java design-patterns factory
1个回答
-1
投票

我认为您正在寻找的是static factory method,而不是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. 您有一个接口,并且在运行时要返回根据某种逻辑选择的特定实现。
  3. 您要控制返回对象的生命周期。

恕我直言,除非您需要上面的任何内容,而只是想构造一个基于对象的用户输入,就需要静态工厂方法。

© www.soinside.com 2019 - 2024. All rights reserved.