JAVA最简单的根据版本号动态切换业务实现逻辑

 

/**
 * @ClassName Version
 * @Description 父类为抽象类,定义一个抽象方法,子类通过重写此方法完成各自业务逻辑
 * @author LBQ
 * @Date 2019年3月8日 下午3:18:58
 * @version 1.0.0
 */
public abstract class Version {
 
    public abstract String executor(String json);
}

/**
 * @ClassName Version_1
 * @Description 子类版本1,类命名规则为:父类名+"_"+版本号,重写父类方法,完成自有业务逻辑
 * @author LBQ
 * @Date 2019年3月8日 下午3:20:25
 * @version 1.0.0
 */
public class Version_1 extends Version {
 
    @Override
    public String executor(String json) {
        System.out.println("调用1版本接口");
        return "It is 1 "+json;
    }
 
}

 

/**
 * @ClassName Version_2
 * @Description 子类版本2,类命名规则为:父类名+"_"+版本号,重写父类方法,完成自有业务逻辑
 * @author LBQ
 * @Date 2019年3月8日 下午3:22:25
 * @version 1.0.0
 */
public class Version_2 extends Version {
 
    @Override
    public String executor(String json) {
        System.out.println("调用2版本接口");
        return "It is 2 "+json;
    }
 
}

 

/**
 * @ClassName ExecuterUtil
 * @Description 执行器工具
 * @author LBQ
 * @Date 2019年3月8日 下午3:23:11
 * @version 1.0.0
 */
public class ExecuterUtil {
 
    public static void main(String[] args) throws Exception {
        // 通过更改版本号,实现不同业务逻辑的切换
        String version = "1";
        String json = "apple";
        try {
            Version v = ExecuterUtil.executeByVersion(Version.class, version);
            String str = v.executor(json);
            System.out.println(str);
        } catch (Exception e) {
            System.out.println("[Version:" + version + "]-没有该版本接口!");
        }
    }


 
 

   /**
     * @Description 根据传入类型,获取全类名拼接版本号,通过反射去实例化一个对象
     * @param clazz
     * @param version
     * @return
     * @throws Exception
     */
    @SuppressWarnings("all")
    private static <T> T executeByVersion(Class clazz, String version) throws Exception {
        // 根据 全类名+"_"+版本号,去实例化对应的业务版本类-(父类和版本类,必须在同一包下哦!)
        T v = (T) Class.forName(clazz.getName() + "_" + version).newInstance();
        return v;
    }
}


1.当接口需要通过版本号,去进行动态切换业务实现逻辑时,可以使用此方法

2.当需要新增一个版本实现时,只要创建一个Vesion_3继承Vesion,重写业务逻辑就行,扩展方便
--------------------- 
版权声明:本文为CSDN博主「CoderPOPO」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CoderPOPO/article/details/88352017

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值