我必须创建一个实现,其中我有一个超类A和两个类B和C都扩展了A,但是B和C都有具有不同参数数量的构造函数。 B有一个带有2个参数的构造函数,C有一个带有1个参数的构造函数。 有没有办法可以使用依赖注入动态创建对象。 现在我通过在C中创建一个虚拟构造函数来为第二个参数传递null。我不想使用这种方法。那么有没有更好的方法来解决这个问题。
现在我正在使用工厂模式来创建类,但希望能够将其移动到依赖注入。以下是我目前的代码
public A getA(String type, String name, String extra)
throws InvalidSubscriberTypeException {
if (Types.B.toString().equalsIgnoreCase(type.toUpperCase())) {
return new B(name);
} else if (Types.C.toString().equalsIgnoreCase(
type.toUpperCase())) {
return new C(name,extra);
} else {
throw new InvalidSubscriberTypeException(
"Please select a valid subscriber - B or C");
}
}
然后我用以下方式调用它
TypeFacotry.getType("B", "Bill", null)
TypeFacotry.getType("C", "Bill", "Deck")
If someone can suggest a DI implementation for the same