Template Method,模板方法:定义一个操作中的算法的骨架,而将一
些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即
可以重定义该算法得某些特定步骤。
举例说明
奶茶制作过程,第一步加牛奶,第二步加糖,第三步加其他配料。第三步对于不同口味的奶茶,可以添加各种配料,那么第三步的方法就可以抽象为一个模板方法,让子类来各自实现。这里给代码。
奶茶基类MilkTea.java
package com.figo.study2024.pattern.template;
/**
* @ClassName:MilkTea
* @PackageName:com.figo.study2024.pattern.template
* @Description:奶茶基类
* @Date:2024/2/20 11:39
* @Author:figo
*/
public abstract class MilkTea {
/**
* 制作奶茶总体流程不变
*/
public void makeMilk()
{
addMilk();
addSuger();
addOther();
}
public void addMilk()
{
System.out.println("第一步添加牛奶");
}
public void addSuger()
{
System.out.println("第二步添加糖");
}
/**
* 添加配料,作为一个模板方法让子类自行实现
*/
public abstract void addOther();
}
珍珠奶茶子类PearlMilkTea.java
package com.figo.study2024.pattern.template;
/**
* @ClassName:PearlMilkTea
* @PackageName:com.figo.study2024.pattern.template
* @Description:珍珠奶茶类描述
* @Date:2024/2/20 12:50
* @Author:figo
*/
public class PearlMilkTea extends MilkTea{
@Override
public void addOther() {
System.out.println("第三步添珍珠");
}
}
红豆奶茶子类RedBeanMilkTea.java文章来源:https://www.toymoban.com/news/detail-832946.html
package com.figo.study2024.pattern.template;
/**
* @ClassName:RedBeanMilkTea
* @PackageName:com.figo.study2024.pattern.template
* @Description:红豆奶茶类描述
* @Date:2024/2/20 12:44
* @Author:figo
*/
public class RedBeanMilkTea extends MilkTea{
@Override
public void addOther() {
System.out.println("第三步添红豆");
}
}
客户端调用:文章来源地址https://www.toymoban.com/news/detail-832946.html
package com.figo.study2024.pattern.template;
/**
* @ClassName:PatterTest
* @PackageName:com.figo.study2024.pattern.template
* @Description:客户端调用类描述
* @Date:2024/2/20 12:53
* @Author:figo
*/
public class PatterTest {
public static void main(String[] args) {
//制作红豆奶茶
MilkTea redBeanMilkTea=new RedBeanMilkTea();
redBeanMilkTea.makeMilk();
//制作珍珠奶茶
MilkTea pearlMilkTea=new PearlMilkTea();
pearlMilkTea.makeMilk();
}
}
到了这里,关于设计模式(六):模板方法模式(行为型模式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!