利用策略 + 工厂优化代码中冗余的 if else 代码

解决问题: 如题所示 大量的if else业务逻辑显得代码很臃肿 后期维护也不太好阅读 采用的是基于策略模式 + 工厂模式进行优化 这里零时写了个demo 仅供参考

抽取的公共接口:
/**
 * @author: 骑猪撞地球QAQ
 * @date: 2021/4/29 10:33
 * @content:
 */
public interface CommonService {
    
    
    /**
     * 公共接口
     */
    void commonMethod();
}
分别实现不同逻辑
/**
 * @author: 骑猪撞地球QAQ
 * @date: 2021/4/29 10:34
 * @content:
 */
public class CommonServiceImpl01 implements CommonService {
    
    
    @Override
    public void commonMethod() {
    
    
        System.out.println("这是调用了IMedalService 实现01......");
    }
}
/**
 * @author: 骑猪撞地球QAQ
 * @date: 2021/4/29 10:34
 * @content:
 */
public class CommonServiceImpl02 implements CommonService {
    
    

    @Override
    public void commonMethod() {
    
    
        System.out.println("这是调用了IMedalService 实现02......");
    }
}
/**
 * @author: 骑猪撞地球QAQ
 * @date: 2021/4/29 10:34
 * @content:
 */
public class CommonServiceImpl03 implements CommonService {
    
    

    @Override
    public void commonMethod() {
    
    
        System.out.println("这是调用了IMedalService 实现03......");
    }
}
工厂类
/**
 * @author: 骑猪撞地球QAQ
 * @date: 2021/4/29 10:35
 * @content:  工厂
 */
public class ServicesFactory {
    
    

    private static final Map<String, CommonService> map = new HashMap<>();
    static {
    
    
        map.put("01", new CommonServiceImpl01());
        map.put("02", new CommonServiceImpl02());
        map.put("03", new CommonServiceImpl03());
    }
    public static CommonService getCommonService(String medalType) {
    
    
        return map.get(medalType);
    }
}
调用
/**
 * @Author: 骑猪撞地球QAQ
 * @Date: 2021/04/29 10:38
 * @Description:
 */
public class Demo {
    
    
    public static void main(String[] args) {
    
    
        CommonService service01 = ServicesFactory.getCommonService("01");
        service01.commonMethod();
        System.out.println("-------------分割线-------------");
        CommonService service02 = ServicesFactory.getCommonService("02");
        service02.commonMethod();
        System.out.println("-------------分割线-------------");
        CommonService service03 = ServicesFactory.getCommonService("03");
        service03.commonMethod();
        System.out.println("-------------分割线-------------");
    }
}
结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44974020/article/details/116263750
今日推荐