定义
定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。
其实就是完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。
实现
父类
public abstract class DodishTemplate {
/**
* 具体的整个过程
*/
protected void dodish() {
this.preparation();
this.doing();
this.carriedDishes();
}
/**
* 备料
*/
public void preparation() {
System.out.println("准备配料....");
}
/**
* 做菜
*/
protected abstract void doing();
/**
* 上菜
*/
public void carriedDishes() {
System.out.println("上菜....");
}
}
子类
public class Fish extends DodishTemplate{
@Override
protected void doing() {
System.out.println("买鱼....");
}
}
总结:
模板方法模式就是父类定义一个模板流程,在流程中某些环节交给子类去实现,这样的好处就是整个流程是固定的,子类可以自定义去实现自己的细节,但是不影响整个流程。
模板方法模式在spring中也有大量的使用。