java if else优化

问题:if else代码以下图如何优化json

if (ComponentTypeEnum.bar.name().equals(screenData.getComponentType())) {
    return ResponseUtil.success(barService.get(screenData.getJsonData()));
} else {
    return ResponseUtil.success(yBarService.get(screenData.getJsonData()));
}

优化流程app

第一步:建立工厂方法用于根据条件,生成不一样的服务类实现ide

public class BarServiceFactory {
    public static BarService getInstance(String type) {
        if (ComponentTypeEnum.bar.name().equals(type)) {
            return SpringContextUtil.getBean(BarServiceImpl.class);
        }else if (ComponentTypeEnum.ybar.name().equals(type)){
            return SpringContextUtil.getBean(YBarServiceImpl.class);
        }
        return null;
    }
}

其中SpringContextUtil代码以下:优化

@Component
public class SpringContextUtil implements ApplicationContextAware {

    /**
     * 上下文对象实例
     */
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContextUtil.applicationContext = applicationContext;
    }

    /**
     * 获取applicationContext
     *
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    /**
     * 经过name获取 Bean.
     *
     * @param name
     * @return
     */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    /**
     * 经过class获取Bean.
     *
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }

    /**
     * 经过name,以及Clazz返回指定的Bean
     *
     * @param name
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}

第二步:建立一个适配器类,用于匹配工厂方法,产生的不一样服务类实现,并带调用具体实现类this

public class BarServiceAdapter implements BarService{
    private BarService barService;

    public BarServiceAdapter(BarService barService){
        this.barService = barService;
    }

    @Override
    public Option get(String json){
        return barService.get(json);
    }
}

第三步:修改对应的表明,已经无需使用if else语句对象

Option option = new BarServiceAdapter(BarServiceFactory.getInstance(screenData.getComponentType())).get(screenData.getJsonData());
return ResponseUtil.success(option);

经过以上优化步骤,由原先4行代码优化到了2行。条件越多,效果更明显。哈哈!!!get

相关文章
相关标签/搜索