具有给定规格的工厂类

时间:2011-01-28 04:44:01

标签: java

对于我正在使用Java工作的其中一个应用程序,我有以下要求。

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

如果A,该方法会创建类src=1的对象;类B的对象,如果src=2。 确保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();
} 

} 

} 

如何改进课程定义以确保其与原始规格更加一致?

感谢。

1 个答案:

答案 0 :(得分:1)

定义工厂类的正确方法(我想你有Abstract factory patten)是通过实现一个接口:

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