JAVA最簡單的根據版本號動態切換業務實現邏輯

原文鏈接:https://blog.csdn.net/CoderPOPO/article/details/88352017

 

/**
 * @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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章