模板模式
业务需求
- 编写豆浆制作程序
- 选材-添加配料-浸泡-豆浆机打碎
- 选材、浸泡、打碎这几步对于制作不同豆浆都是一样的
- 比较简单,这里不再使用传统方法,直接上设计模式
模板模式基本介绍
- 模板模式,在一个抽象类公开定义了执行他的方法的模板;他的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行
- 简单说,模板模式定义一个操作中的算法骨架,将一些步骤延迟到子类中,使子类可以不改变一个算法结构,就可以重新定义该算法的某些特定步骤
- 模板模式属于行为型模式
原理类图
原理类图说明
- AbstractClass是抽象类,包括模板方法,定义了算法骨架,由子类具体实现里面的抽象方法
- ConcreteClass 实现了抽象方法,完成算法中的特定子类相关步骤
- 模板方法可以做成final,防止子类覆盖
代码思路
模板抽象类
public abstract class SoyaMilk {
// 模板方法
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 SoyaMilk{
@Override
void addCondiments() {
System.out.println("第二步,加入红豆配料");
}
}
public class PeanutSoyaMilk extends SoyaMilk{
@Override
void