模板方法模式: 在一个抽象类公开定义了执行它的方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 属于行为型模式。
spring ioc容器初始化时运用到模板方法模式。
// 抽象类,表示豆浆
public abstract class SoyMilk {
// 模板方法可以做成final,不让子类覆盖
final void make(){
select();
addCondiments();
soak();
beat();
}
void select(){
System.out.println("第一步: 选择好的新鲜黄豆 ");
}
abstract void addCondiments();
// 浸泡
void soak(){
System.out.println("第三部: 黄豆和配料开始浸泡,需要3个小时 ");
}
void beat(){
System.out.println("第四部: 黄豆和配料放到豆浆机去打碎 ");
}
}
public class RedBeanSoyaMilk extends SoyMilk{
@Override
void addCondiments() {
System.out.println("加入上好的红豆...");
}
}
public class PeanutSoyaMilk extends SoyMilk{
@Override
void addCondiments() {
System.out.println("加入上好的花生...");
}
}
public class Client {
public static void main(String[] args){
System.out.println("制作红豆豆浆");
SoyMilk redBeanSoyaMilk = new RedBeanSoyaMilk();
redBeanSoyaMilk.make();
System.out.println("制作花生豆浆");
SoyMilk peanutSoyaMilk = new PeanutSoyaMilk();
peanutSoyaMilk.make();
}
}