一、简介
1、定义
模版方法模式(Template Method Pattern)是一种行为设计模式,它在抽象父类中定义了一个操作的算法模板,并将某些步骤的执行延迟到具体子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些特定步骤。通过定义模板方法在抽象父类中,并将一些步骤的实现延迟到具体子类中。
2、策略模式的结构
模版方法模式涉及以下几个角色:
抽象类(AbstractClass):定义抽象基类,为所有子类提供一个算法框架。
具体子类(ConcreteClass)实现:根据需要重写父类提供的算法步骤中的某些步骤。
二、Java实现泡茶和冲咖啡过程案例
/*** @Description: 饮料抽象类* @Date: 2025-02-11 16:21* @Author: gaoyufei**/
public abstract class Drink {public final void makeDrink(){boilWater();//1、烧水putIntoCup();//2、茶叶或咖啡放入杯子putWaterIntoCup();//3、开水倒入杯子里if(isTea()){MakeTea();//4、茶需要泡几分钟}drink();// 5、可以喝了}public void boilWater(){System.out.println("烧水");}protected abstract void putIntoCup();protected void putWaterIntoCup(){System.out.println("开水倒入杯子");}protected abstract boolean isTea();protected abstract void MakeTea();protected void drink(){System.out.println("可以喝了");}
}/*** @Description: 具体类 茶* @Date: 2025-02-11 16:31* @Author: gaoyufei**/
public class Tea extends Drink{@Overrideprotected void putIntoCup() {System.out.println("将茶叶放入杯子");}@Overrideprotected boolean isTea() {return true;}@Overrideprotected void MakeTea() {System.out.println("泡茶3分钟");}
}/*** @Description: 具体类 咖啡* @Date: 2025-02-11 16:32* @Author: gaoyufei**/
public class Coffee extends Drink{@Overrideprotected void putIntoCup() {System.out.println("将咖啡放入杯子");}@Overrideprotected boolean isTea() {return false;}@Overrideprotected void MakeTea() {}
}/*** @Description: 人* @Date: 2025-02-11 16:35* @Author: gaoyufei**/
public class People {public static void main(String[] args) {//泡茶过程Drink tea=new Tea();tea.makeDrink();System.out.println("--------------------");//冲咖啡过程Drink coffee=new Coffee();coffee.makeDrink();}
}