我有一个使用抽象类的应用程序。抽象类有一个由应用程序类使用的静态具体方法,用于确定应该初始化抽象类的哪个子类(根据应用程序类的输入)来执行typeSpecific任务。
尽管我使用guice将依赖项A注入到应用程序类中。
是应用程序类中的if else逻辑,用于初始化"typeOfInput“糟糕的编码样式。因为,我使用guice初始化依赖项"A“,但使用"new”初始化同一个类中的两个子类。有没有办法用DI初始化"typeOfInput“?
对一些人来说可能看起来很傻,但我是一个初学者。提前感谢
public class Application {
private final Dependency a;
private AbstractClass typeOfInput;
private static final TypeOfInput typeA = some_constant_value;
@Inject
Application(final Dependency a){
this.a = a;
}
public doTask(final InputData inputData) {
if(AbstractClass.getInputType(inputData) == typeA){
typeOfInput = new classExtendingAbstractClassOne(a);
}else{
typeOfInput = new classExtendingAbstractClassTwo(a);
}
typeOfInput.doTypeSpecificTask();
}
}
abstract class AbstractClass{
//Concrete method
static TypeOfInput getTypeOfInput(final InputData inputData) {
//Does some processing and returns TypeOfInput value
}
abstract void doTypeSpecificTask();
}
class classExtendingAbstractClassOne extends AbstractClass {
void doTypeSpecificTask() {
//DO something relevant to this type
}
}
class classExtendingAbstractClassTwo extends AbstractClass {
void doTypeSpecificTask() {
//DO something relevant to this type
}
}
转载请注明出处:http://www.beijingklxcmc.com/article/20230526/1307842.html