設計模式-23種設計模式-行為型-模板模式
阿新 • • 發佈:2021-07-07
一、模板模式介紹
二、模板模式引入
UML類圖:
程式碼實現(Java):
//抽象類,表示豆漿 public abstract class SoyaMilk { //模板方法, make , 模板方法可以做成final , 不讓子類去覆蓋. final void make() { select(); if(customerWantCondiments()) { addCondiments(); } soak(); beat(); } //選材料void select() { System.out.println("第一步:選擇好的新鮮黃豆 "); } //新增不同的配料, 抽象方法, 子類具體實現 abstract void addCondiments(); //浸泡 void soak() { System.out.println("第三步, 黃豆和配料開始浸泡, 需要3小時 "); } void beat() { System.out.println("第四步:黃豆和配料放到豆漿機去打碎 "); }//鉤子方法,決定是否需要新增配料 boolean customerWantCondiments() { return true; } }
public class RedBeanSoyaMilk extends SoyaMilk { @Override void addCondiments() { System.out.println(" 加入上好的紅豆 "); } }
public class PeanutSoyaMilk extends SoyaMilk { @Override void addCondiments() { System.out.println(" 加入上好的花生 "); } }
public class PureSoyaMilk extends SoyaMilk{ @Override void addCondiments() { //空實現 } @Override boolean customerWantCondiments() { return false; } }
public class Client { public static void main(String[] args) { //製作紅豆豆漿 System.out.println("----製作紅豆豆漿----"); SoyaMilk redBeanSoyaMilk = new RedBeanSoyaMilk(); redBeanSoyaMilk.make(); System.out.println("----製作花生豆漿----"); SoyaMilk peanutSoyaMilk = new PeanutSoyaMilk(); peanutSoyaMilk.make(); System.out.println("----製作純豆漿----"); SoyaMilk pureSoyaMilk = new PureSoyaMilk(); pureSoyaMilk.make(); } }