模板模式:封装了一个算法步骤,并允许子类为一个或者多个步骤方法提供实现
模板模式可以使子类在不改变算法的情况下,重新定义算法中的某些步骤
框架一般用模板来做的
比如Java的数组排序 Java实现排序算法,比较大小的规则有子类实现Comparable类来提供
应用场景:冲水 冲咖啡
public abstract class HotDrink { public final void perpareRecipe(){ boilWater(); brew(); pourInCup(); if(wantCondimentsHook()){ addCondiments(); }else{ System.out.println("No Condiments"); } addCondiments(); }; public boolean wantCondimentsHook(){ return true; } public final void boilWater(){ System.out.println("Boiling water"); } public abstract void brew(); public final void pourInCup(){ System.out.println("Pouring into cup"); } public abstract void addCondiments(); } public class MCoffe extends HotDrink { @Override public void brew() { System.out.println("Brewing Coffe"); } @Override public void addCondiments() { System.out.println("Adding sugar and milk"); } } public class MTea extends HotDrink { @Override public void brew() { System.out.println("Brewing tea"); } @Override public void addCondiments() { System.out.println("Adding lemon"); } @Override public boolean wantCondimentsHook() { return false; } } public class MainTest { public static void main(String[] args) { MCoffe mCoffe = new MCoffe(); MTea mTea = new MTea(); mCoffe.perpareRecipe();; mTea.perpareRecipe(); } }