gpt4 book ai didi

java - 具有给定规范的工厂类

转载 作者:行者123 更新时间:2023-12-01 15:57:26 25 4
gpt4 key购买 nike

我对我正在使用 Java 开发的应用程序之一有以下要求。

有一个工厂类 C,具有以下方法 create(int src),用于创建类 AB 的对象。

如果src=1,该方法创建A类的对象;如果 src=2,则为 B 类的对象。确保除 C 之外的任何其他类都无法创建 AB 的对象。

我无法使用反射。

这是我到目前为止所尝试的。

class C{

private int src;

public c(){
…//Default constructor
}

public create (int src){

if(src = 1){
A aobj = new A();
}
else if (src=2){
B bobj = new B();
}

}

}

如何改进类定义以确保其与原始规范更加一致?

谢谢。

最佳答案

定义工厂类的正确方法(我想您已经记住了Abstract factory patten)是实现一个接口(interface):

public interface IAbstract { }
public class A implements IAbstract { }
public class C implements IAbstract { }

// The factory interface that creates concrete implementations of IAbstract.
public interface IAbstractFactory {
public IAbstract create();
}

public class AFactory implements IAbstractFactory {
public IAbstract create() {
return new A();
}
}

public class BFactory implements IAbstractFactory {
public IAbstract create() {
return new B();
}
}

要使用的工厂实现是根据某些应用程序配置来选择的。这意味着,工厂类中的条件将移至代码中的更高级别:

public static void main(String args[]) {
int src = Integer.parseInt(args[0]);
IAbstractFactory factory = null;
if (src == 1)
factory = new AFactory();
else if (src == 2)
factory = new BFactory();
IAbstract obj = factory.create();
// ....
}

关于java - 具有给定规范的工厂类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4824911/

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