1. 程式人生 > >java設計模式(三)模板模式

java設計模式(三)模板模式

pro str pan style coff pub 調用 類定義 ted

  抽象類中公開定義了執行它的方法的方式,子類可以按需求重寫方法實現,但調用將以抽象類中定義的方式進行,典型應用如銀行辦理業務流程、沖泡飲料流程。下面給出簡單例子,用沸水沖泡飲料,分為四步:將水煮沸、泡制飲料、將飲料倒入杯中、加入調味料。

1、模板抽象類

  要點:1)抽象類 2)final修飾的模板方法

public abstract class RefreshTemplate {

    public final void refresh() {
        //將水煮沸
        biolWater();
        //炮制飲料
        brew();
        
//將飲料倒入杯中 pourInCup(); //加入調味料 addCondiments(); } private void biolWater() { System.out.println("將水煮沸"); } protected abstract void brew(); private void pourInCup() { System.out.println("將飲料倒入杯中"); } protected abstract void addCondiments(); }

2、咖啡類,繼承模板類,重寫沖泡、加調味料方法

public class Coffee extends RefreshTemplate {
    protected void brew() {
        System.out.println("用沸水沖泡咖啡");
    }

    protected void addCondiments() {
        System.out.println("向咖啡中加入牛奶和糖");
    }
}

3、茶類,繼承模板類,重寫沖泡、加調味料方法

public class Tea extends RefreshTemplate {
    
protected void brew() { System.out.println("用開水浸泡5分鐘"); } protected void addCondiments() { System.out.println("加入檸檬"); } }

4、測試

public class Model {

    public static void main(String[] args) {
        //RefreshTemplate refresh = new Coffee();
        RefreshTemplate refresh = new Tea();
        refresh.refresh();
    }

}

利用Java的動態綁定(向上轉型),調用父類的final模板方法,保證執行按抽象類定義的方式進行。

java設計模式(三)模板模式