对于我正在使用Java工作的其中一个应用程序,我有以下要求。
拥有一个工厂类C,使用以下方法create(int src)
创建类A
和B
的对象。
如果A
,该方法会创建类src=1
的对象;类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();
}
}
}
如何改进课程定义以确保其与原始规格更加一致?
感谢。
答案 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();
// ....
}