模板方法
本文最后更新于 2025-03-23,文章超过7天没更新,应该是已完结了~
模板方法模式,又叫模板模式。在一个抽象类中公开定义了执行它的方法的模板,它的子类可以按需重写方法实现,但调用将以抽象类中模板的方式进行。
模板模式定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤。
这种类型的设计模式属于行为型模式。
public abstract class SoyaMilk {
//模板方法,声明为final,不让子类去覆盖改变算法
final void make(){
select();
if (customerWantCondiments())
addCondiments();
soak();
bead();
}
void select(){
System.out.println("第一步,选择新鲜黄豆");
}
//想加什么料,由子类具体实现
abstract void addCondiments();
void soak(){
System.out.println("第三步,黄豆和配料开始浸泡");
}
void bead(){
System.out.println("第四步,黄豆和配料放到豆浆机去打");
}
//钩子方法,决定是否需要添加调料
boolean customerWantCondiments(){
return true;
}
}
红豆+豆浆奶:
public class ReadBeanSoyaMilk extends SoyaMilk {
@Override
void addCondiments() {
System.out.println("加入红豆");
}
}
纯豆浆:
public class PureSoyaMilk extends SoyaMilk {
@Override
void addCondiments() {
}
@Override
boolean customerWantCondiments() {
return false;
}
}
花生+豆浆:
public class PeanutSoyaMilk extends SoyaMilk {
@Override
void addCondiments() {
System.out.println("加入花生");
}
}
客户端:
public class Client {
public static void main(String[] args) {
ReadBeanSoyaMilk readBeanSoyaMilk = new ReadBeanSoyaMilk();
readBeanSoyaMilk.make();
PeanutSoyaMilk peanutSoyaMilk = new PeanutSoyaMilk();
peanutSoyaMilk.make();
PureSoyaMilk pureSoyaMilk = new PureSoyaMilk();
peanutSoyaMilk.make();
}
}
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 MateHecho