標籤:system 子類 blog span 辦理 利用 簡單 需求 color
抽象類別中公開定義了執行它的方法的方式,子類可以按需求重寫方法實現,但調用將以抽象類別中定義的方式進行,典型應用如銀行辦理商務程序、沖泡飲料流程。下面給出簡單例子,用沸水沖泡飲料,分為四步:將水煮沸、泡製飲料、將飲料倒入杯中、加入調味料。
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設計模式(三)模板模式