使用依赖注入在方法内初始化抽象类的子类


我有一个使用抽象类的应用程序。抽象类有一个由应用程序类使用的静态具体方法,用于确定应该初始化抽象类的哪个子类(根据应用程序类的输入)来执行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