gpt4 book ai didi

java - 工厂模式是否只能用于一个用户定义的类并且不能用于子类

转载 作者:行者123 更新时间:2023-12-02 01:10:09 25 4
gpt4 key购买 nike

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

我不想为每种可能的货币创建子类,因为详细信息是由用户输入的,并且这些货币也可能是虚构的。我也没有任何其他类(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;
}

我想我一定错过了一些东西,但我无法弄清楚。工厂模式有可能不应该以这种方式使用吗?

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

最佳答案

我认为您正在寻找的是 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. 您有一个接口(interface),并且在运行时您希望返回一个基于某些逻辑选择的特定实现。
  3. 您想要控制返回对象的生命周期。

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

关于java - 工厂模式是否只能用于一个用户定义的类并且不能用于子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59523051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com