Java实现模版方法模式
一、简介
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{
@Override
protected void putIntoCup() {
System.out.println("将茶叶放入杯子");
}
@Override
protected boolean isTea() {
return true;
}
@Override
protected void MakeTea() {
System.out.println("泡茶3分钟");
}
}
/**
* @Description: 具体类 咖啡
* @Date: 2025-02-11 16:32
* @Author: gaoyufei
**/
public class Coffee extends Drink{
@Override
protected void putIntoCup() {
System.out.println("将咖啡放入杯子");
}
@Override
protected boolean isTea() {
return false;
}
@Override
protected 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();
}
}