設(shè)計模式-模板方法模式(Template Pattern)

上一篇 <<<策略模式(Strategy Pattern)
下一篇 >>>外觀/門面模式(Facade Pattern)


模板方法模式:定義一個操作中的算法的骨架,差異性的實現(xiàn)交由子類完成。

應(yīng)用場景

  • 支付回調(diào)、銀行業(yè)務(wù)
  • 聯(lián)合登錄、對接三方短信接口、分布式鎖
  • 數(shù)據(jù)庫訪問的封裝
  • Junit單元測試
  • Hibernate中模板程序
  • spring中JDBCTemplate,HibernateTemplate等
  • httpservlet中的doget、dopost等


模板方法模式優(yōu)缺點

優(yōu)點:
模板方法模式通過把不變的行為搬移到超類,去除了子類中的重復(fù)代碼。子類實現(xiàn)算法的某些細(xì)節(jié),有助于算法的擴展。通過一個父類調(diào)用子類實現(xiàn)的操作,通過子類擴展增加新的行為,符合“開放-封閉原則”。

缺點:
每個不同的實現(xiàn)都需要子類,會導(dǎo)致子類個數(shù)的增加,設(shè)計更加抽象。

模板方法模式與策略模式的區(qū)別

相同點:它們的細(xì)節(jié)均由子類實現(xiàn)
不同點:
a.策略是相同的操作,定義為接口;模板方法是相同的骨架,定義為抽象類。
b.策略主要解決多重if的問題;模板方法主要解決代碼冗余的問題。

模板方法模式實現(xiàn)方式核心代碼

/**
 * 異步回調(diào)業(yè)務(wù)
 * @return
 */
public String asyncCallBack() {
    // 1. 支付回調(diào)驗證參數(shù)
    Map<String, String> verifySignatureMap = verifySignature();
    // 2. 參數(shù)驗證成功,寫入日志中..
    payLog(verifySignatureMap);
    String analysisCode = verifySignatureMap.get("analysisCode");
    if (!analysisCode.equals("200")) {
        return resultFail();
    }
    // 3. 執(zhí)行回調(diào)異步相關(guān)邏輯
    return asyncService(verifySignatureMap);
}

/**
 * 支付回調(diào)驗證參數(shù)
 *
 * @return
 */
protected abstract Map<String, String> verifySignature();

/**
 * 每個子類需要實現(xiàn) 實現(xiàn)業(yè)務(wù)解析操作
 *
 * @return
 */
protected abstract String asyncService(Map<String, String> verifySignatureMap);
@Override
protected Map<String, String> verifySignature() {
    //具體業(yè)務(wù)
}

@Override
protected String asyncService(Map<String, String> verifySignatureMap) {
    //具體業(yè)務(wù)
}
/**
*  真實調(diào)用
*/
@RequestMapping("/test")
public String test(String beanId){
    AbstractPayCallbackTemplate payCallbackTemplate = TemplateFactory.getPayCallbackTemplate(beanId);
    return payCallbackTemplate.asyncCallBack();
}

相關(guān)文章鏈接:
<<<23種常用設(shè)計模式總覽
<<<代理模式(Proxy Pattern)
<<<裝飾模式(Decorator Pattern)
<<<觀察者模式(Observer Pattern)
<<<單例模式(Singleton Pattern)
<<<責(zé)任鏈模式(Chain of Responsibility Pattern)
<<<策略模式(Strategy Pattern)
<<<外觀/門面模式(Facade Pattern)
<<<建造者模式(Builder Pattern)
<<<適配器模式(Adapter Pattern)
<<<原型模式(Prototype Pattern)
<<<工廠相關(guān)模式(Factory Pattern)

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

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

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