多接口解析器通过使用Java中的任何设计模式



我创建了两个接口。每个接口都扩展了另一个接口。我在出厂类中创建了一种方法,并且正在通过在每种情况下使用实现的类创建每个接口对象的对象。但是问题是我们如何管理多个返回类型一种方法。我知道这是不可能的,因为方法总是一次返回一个值。但是我想要动态返回类型我不想使用对象类型。有没有解决此问题的解决方案。

当返回动态对象返回动态对象时,该对象的方法应在不打字的情况下调用。

@Service
public class ModuleResolverFactory {

    @Autowired
    private ApplicationContext context;
    public Object getModule(String objectType) throws VEnableBusinessException {
        switch (objectType) {
            case Constant.API_TYPE_DEE:
                return context.getBean(SceModuleService.class);
            case Constant.API_TYPE_SCE:
                return context.getBean(SceModuleService.class);
            default:
                throw new VEnableBusinessException(Constant.STATUS_FAILURE, MessageSupplier.EXCEPTION_MESSAGE.get(),"Invalid objectType found: " + objectType);
        }
    }
}




 public Object add(RequestDto requestDto) throws VEnableBusinessException {
        Object res=null;
        logModel.getExecutionSteps().add("Starting Executing Request For ADD Apis : " + requestDto);
        Object module=moduleResolverFactory.getModule(requestDto.getObjectType());
        logModel.getExecutionSteps().add("Fetched Module For : " + UtilFunctions.orgAppMessage.apply(requestDto.getClientId(), requestDto.getProjectId(), requestDto.getEnvironment()));
        res = ((DeeModuleService)(module)).add(requestDto);
        logModel.getExecutionSteps().add("Api Added : " + requestDto);
        return res;
    }

在上面的代码中,我正在施放对象,但是我不希望这个动态,因为将来它可能100型

我发现做这种事情的最佳方法是将接口作为参数传递:

@Service
public class ModuleResolverFactory {
    @Autowired
    private ApplicationContext context;
    public <T> T getModule(Class<T> objectType) {
        return context.getBean(objectType);
    }
}

可能是您的两个顶级接口以扩展一个常见的父界面。然后,父接口可以声明" add(requestdto("

然后,您可以在出厂方法中返回parent Interface。

最新更新