Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。
实例如下:
//测试类体
public class Test {
public static void main(String[] args) {
BaoZiShop baozi=new BaoZiShop();
baozi.jingYingbaoZi();
}
}
//父类
public abstract class BaoZi {
//做包子
public abstract void make();
//蒸包子
public abstract void zheng();
//卖包子
public abstract void mai();
//经营包子店
public final void jingYingbaoZi(){
make();
zheng();
if(isMai()){
mai();
}
}
//此方法用于控制卖还是不卖
public boolean isMai(){
return true;
}
}
//子类体
public class BaoZiShop extends BaoZi{
Scanner scanner;
int week;
public BaoZiShop(){
scanner = new Scanner(System.in);
System.out.println("输入星期:");
week = scanner.nextInt();
}
@Override
public void make() {
// TODO Auto-generated method stub
System.out.println("做包子");
}
@Override
public void zheng() {
// TODO Auto-generated method stub
System.out.println("蒸包子");
}
@Override
public void mai() {
// TODO Auto-generated method stub
System.out.println("卖包子");
}
@Override
public boolean isMai() {
if(week == 6){
return false;
}
return true;
}
}