模板模式的應用

1:模板接口

public interface OuterGlideImportInterface {
    public void doImportGlide();
}

2:模板抽象方法

public abstract class AbstractOuterGlideImportCommand implements OuterGlideImportInterface {
    public Integer payWay;
    public String descInfo;

    public AbstractOuterGlideImportCommand(Integer payWay, String descInfo) {
        this.payWay = payWay;
        this.descInfo = descInfo;
    }

    @Override
    public void doImportGlide() {
        // 通用預檢測
        preCheck(payWay);
        // 不同支付方式單獨特殊處理模塊
        importOuterGildeByExcelFile(descInfo);
        // 通用后檢測
        afterCheck(payWay);
    }

    public void preCheck(Integer payWay) {
        String payName = "";
        switch (payWay) {
            case 1:
                payName = "支付寶";
                break;
            case 4:
                payName = "微信";
                break;
            case 5:
                payName = "銀聯(lián)";
                break;
            default:
                payName = "銀聯(lián)";
                break;
        }
        System.out.println(payName + "支付:預檢測開始...");
    }

    public void afterCheck(Integer payWay) {
        String payName = "";
        switch (payWay) {
            case 1:
                payName = "支付寶";
                break;
            case 4:
                payName = "微信";
                break;
            case 5:
                payName = "銀聯(lián)";
                break;
            default:
                payName = "銀聯(lián)";
                break;
        }
        System.out.println(payName + "支付:后檢測開始...");
    }

    public abstract void importOuterGildeByExcelFile(String descInfo);

}

3:三個具體子類方法

public class AliFileImportImpl extends AbstractOuterGlideImportCommand {

    public String preDescInfo;

    public AliFileImportImpl(Integer payWay, String descInfo, String preDescInfo) {
        super(payWay, descInfo);
        this.preDescInfo = preDescInfo;
    }

    @Override
    public void importOuterGildeByExcelFile(String descInfo) {
        System.out.println(preDescInfo + descInfo);
    }
}
public class WechatFileImportImpl extends AbstractOuterGlideImportCommand {

    public String preDescInfo;

    public WechatFileImportImpl(Integer payWay, String descInfo, String preDescInfo) {
        super(payWay, descInfo);
        this.preDescInfo = preDescInfo;
    }

    @Override
    public void importOuterGildeByExcelFile(String descInfo) {
        System.out.println(preDescInfo + descInfo);
    }
}
public class YinLianFileImportImpl extends AbstractOuterGlideImportCommand {

    public String preDescInfo;

    public YinLianFileImportImpl(Integer payWay, String descInfo, String preDescInfo) {
        super(payWay, descInfo);
        this.preDescInfo = preDescInfo;
    }

    @Override
    public void importOuterGildeByExcelFile(String descInfo) {
        System.out.println(preDescInfo + descInfo);
    }
}

4:測試

public class TestTemplate {
    public static void main(String[] args) {
        AliFileImportImpl aliFileImport = new AliFileImportImpl(1, "導入支付寶外部文件核心邏輯", "AliFileImportImpl.");
        aliFileImport.doImportGlide();

        WechatFileImportImpl wechatFileImport = new WechatFileImportImpl(4, "導入微信外部文件核心邏輯", "WechatFileImportImpl.");
        wechatFileImport.doImportGlide();

        YinLianFileImportImpl duxiaomFileImport = new YinLianFileImportImpl(5, "導入銀聯(lián)外部文件核心邏輯", "DuxiaomFileImportImpl.");
        duxiaomFileImport.doImportGlide();
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容