模板模式(Template)抽象类定义了执行固定流程,子类可以按需重写方法不同实现
以制作豆浆流程为例:
/**
* @description: 豆浆制作抽象类
* @author: jiang
*/
public abstract class SoyaMilk {
/**
* 制作流程
*/
final void make(){
select();
addCond();
beat();
}
//选择材料
void select(){
System.out.println("第一步选择材料");
}
//添加不同配料
abstract void addCond();
//打磨
void beat(){
System.out.println("第三步,打磨豆浆");
}
}
/**
* @description: 红豆浆
* @author: jiang
*/
public class ReadSoyaMilk extends SoyaMilk{
@Override
void addCond() {
System.out.println("加入红豆");
}
}
/**
* @description: 黑豆浆
* @author: jiang
*/
public class BlackSoyaMilk extends SoyaMilk{
@Override
void addCond() {
System.out.println("加入黑豆");
}
}
public static void main(String[] args) {
//制作红豆浆
SoyaMilk red = new ReadSoyaMilk();
red.make();
//制作黑豆浆
SoyaMilk black = new BlackSoyaMilk();
black.make();
}
结果:
第一步选择材料
加入红豆
第三步,打磨豆浆
第一步选择材料
加入黑豆
第三步,打磨豆浆