Java 具有给定规格的工厂类

Java 具有给定规格的工厂类,java,Java,对于我正在使用Java开发的应用程序之一,我有以下要求 拥有一个工厂类C,具有以下方法create(int-src),该方法创建类a和B的对象 如果src=1,该方法将创建类A的对象;类B的对象,如果src=2。 确保除了C之外,没有其他类可以创建A和B的对象 我不能使用反射 这是我到现在为止一直在尝试的 class C{ private int src; public c(){ …//Default constructor } public create (int src){

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

拥有一个工厂类C,具有以下方法
create(int-src)
,该方法创建类
a
B
的对象

如果
src=1
,该方法将创建类
A
的对象;类
B
的对象,如果
src=2
。 确保除了
C
之外,没有其他类可以创建
A
B
的对象

我不能使用反射

这是我到现在为止一直在尝试的

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

} 

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


谢谢。

定义factory类的正确方法(我想您已经想到了)是实现一个接口:

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();
    }
} 
根据某些应用程序配置选择要使用的工厂实现。这意味着,factory类中的条件将在代码中移动到更高级别:

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();
    // ....
}

是否缺少“公共类B实现IAbstract(){}”??