登陆网站取消备案,电脑微信公众号登录入口,微网站怎么开发,做网站的工具 论坛Template Method#xff0c;模板方法#xff1a;定义一个操作中的算法的骨架#xff0c;而将一 些步骤延迟到子类中#xff0c;TemplateMethod使得子类可以不改变一个算法的结构即 可以重定义该算法得某些特定步骤。
举例说明
奶茶制作过程#xff0c;第一步加牛奶…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{Overridepublic void addOther() {System.out.println(第三步添珍珠);}
}红豆奶茶子类RedBeanMilkTea.java
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{Overridepublic void addOther() {System.out.println(第三步添红豆);}
}客户端调用
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 redBeanMilkTeanew RedBeanMilkTea();redBeanMilkTea.makeMilk();//制作珍珠奶茶MilkTea pearlMilkTeanew PearlMilkTea();pearlMilkTea.makeMilk();}
}