java設計模式(三)模板模式
阿新 • • 發佈:2017-07-19
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設計模式(三)模板模式