18、模版方法模式(設計模式筆記)

一、場景

  • 客戶到銀行辦理業務
    1、取號排隊
    2、辦理具體現金、轉賬、企業、個人、理財業務
    3、給銀行工作人員評分

二、介紹

模版方法模式是編程中經常用到的模式。它定義了一個操作中的算法骨架,將某些步驟延遲到子類中實現。這樣,新的子類可以在不改變一個算法結構的前提下重新定義該算法的某些特定步驟

三、核心

處理某個流程的代碼已經都具備,但是其中某個節點的代碼暫時不能確定。因此,我們采用工廠方法模式,將這個節點的代碼實現轉移給子類完成。即:處理步驟父類中定義好,具體實現延遲到子類中定義。就是一個回調過程

BankTemplateMethod.java

package cn.itcast.day249.template;
public abstract class BankTemplateMethod {
    //具體方法
    public void takeNumber(){
        System.out.println("排隊取號");
    }
    public abstract void transact();//辦理具體的業務(鉤子方法)
    
    public void evaluate(){
        System.out.println("反饋評分");
    }
    
    public final void process(){//模版方法
        this.takeNumber();
        
        this.transact();
        
        this.evaluate();
    }
}

說明:從上面的類我們可以看到,一些固定的方法我們都已經實現,同時這些方法的調用過程(即模版)我們也已經實現,但是對于具體的業務方法需要在使用的時候去實現,此時我們只需要在子類中實現相關方法即可。

Client.java

package cn.itcast.day249.template;
public class Client {
    public static void main(String[] args) {
        BankTemplateMethod btm = new DrawMoney();
        btm.process();//調用process方法
        
        //更多的時候是采用匿名內部類
        BankTemplateMethod btm2 = new BankTemplateMethod() {

            public void transact() {
                System.out.println("存錢");
            }
        };
        btm2.process();
    }
}

class DrawMoney extends BankTemplateMethod{

    @Override
    public void transact() {
        System.out.println("取款");
    }
    
}

說明:如上,當我們在子類實現相關的方法之后,在使用的時候父類會調用此實現。

四、使用時機

實現一個算法時,整體步驟很固定,但是,某些部分易變。易變部分可以抽象出來,供子類實現

五、開發中常見的場景

  • 數據庫訪問的封裝
  • Junit單元測試
  • servlet中關于doGet/doPost方法的調用
  • Hibernate中模版程序
  • springJDBCTemplate、HibernateTemplate
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,740評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,841評論 25 708
  • 設計模式基本原則 開放-封閉原則(OCP),是說軟件實體(類、模塊、函數等等)應該可以拓展,但是不可修改。開-閉原...
    西山薄涼閱讀 3,852評論 3 14
  • 德音171022初級班學員課堂隨筆 靜波 說到花到花道,非常感謝一個人。 張碧花姐姐,華僑城慈林茶舍的女主人,花...
    生活的眼鏡閱讀 296評論 0 0
  • 有關吉他的起源,曾有過這樣一個美麗的傳說。 太陽神阿波羅在原野追逐一位美麗的少女。 作為希臘神話中最多才多藝的神,...
    師小師閱讀 768評論 0 1