天天看點

Java模闆模式(template)

 java23中設計模式中的模闆模式是我們經常在架構源碼中能看到的設計模式,是以本文就給大家來介紹下模闆模式

模闆模式

模闆模式介紹

 模闆方法模式是程式設計中經常用得到的模式,它定義了一個操作中的算法核心,然後将某些步驟延遲到子類中實作。這樣,新的子類可以在不改變一個算法結構的前提下重新定義該算法的某些特定的步驟。

 換個說法就是某個流程的代碼已經都具備了,但是其中某個節點的代碼暫時不能确定,是以,我們采用模闆方法模式,将這個節點的代碼實作轉移到子類中完成,即:處理步驟父類中定義好,具體的實作延遲到子類定義中。

代碼實作

 我們通過銀行辦理業務,排隊區号來操作來模拟模闆模式。

/**
 * 父類
 * @author 波波烤鴨
 *
 */
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();
    }
}      

測試類

public static void main(String[] args) {

    // 采用匿名内部類
    BankTemplateMethod btm1 = new BankTemplateMethod() {
        @Override
        public void transact() {
            System.out.println("我要存錢!");
        }
    };
    btm1.process();
    System.out.println("---------------------------");
    BankTemplateMethod btm2 = new BankTemplateMethod() {
        @Override
        public void transact() {
            System.out.println("我要理财!我這裡有2000萬韓币");
        }
    };
    btm2.process();
}      

輸出

取号排隊
我要存錢!
回報評分
---------------------------
取号排隊
我要理财!我這裡有2000萬韓币
回報評分      

小結:銀行為了友善顧客辦理業務,是以制定了一套固定的業務流程。比如來了先取号排隊,然後辦理業務,然後評分。取号排隊和評分這些功能銀行可以實作,但是辦理具體的業務就得具體的顧客來實作了。這就是模闆模式。

開發中常見的場景

1 資料庫通路的封裝

2 Junit單元測試

 3  servlet中的doGet和doPost方法

4 Hibernate中的模闆程式

5  Spring中的JdbcTemplate,HibernateTemplate等

6   …