请教关于工厂模式中创建对象需要不同参数的问题

大家好

我在使用工厂模式的时候有些不明白的地方,比如我的工厂模式创建类A,B,C的实例,他们都有接口I,但是创建A不需要参数,创建B需要1个参数,创建C需要2个参数,那我工厂类为伪代码大概写成这个样子:


public static I createI(int type, Object param1, Object param2){
if (type == 1) {
return new A();
}else if (type == 2) {
return new B(param1);
}else if (type == 3) {
return new C(param1, param2);
}else {
//exception
}
}

然后到了后面,我又多了D和E的实现,但是D需要3个参数,E需要4个参数,这样我就要改工厂类的方法变成:


public static I createI(int type, Object param1, Object param2, Object param3, Object param4){
if (type == 1) {
return new A();
}else if (type == 2) {
return new B(param1);
}else if (type == 3) {
return new C(param1, param2);
}else if (type == 4) {
return new D(param1, param2, param3);
}else if (type == 5) {
return new E(param1, param2, param3, param4);
}else {
//exception
}
}

这样我之前的创建A,B,C的代码也要修改了,我总觉得这样不对,但是又不知道要怎么改,请大家指点一下

banq,你好

在实际我现在的使用中,其实这些参数都是通过扫描一些自定义注解的值来获取的,通过配置问的话,我还是不能太明白,链接中的帖子,我理解下来,只是说把类的全限定路径写到配置文件中,然后通过反射来创建对象,但是创建的时候还是要传入参数的啊,这样我传给工厂方法的参数还是在变啊,请指教。