在父类中定义一个操作的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法结构即可重新定义该算法的某些特定步骤
模板方法模式的组成:
父类:提供模板
子类:具体实现某些操作
模板方法模式是很好理解的,在Java中也经常看到,在抽象(abstract)类中定义方法,具体实现交给子类负责,下面用简单的例子实现模板方法模式:
package templatemethod;
/**
*
* @author jie
*
* 创建父类,定义模板,一般为抽象类,具体依情况而定
*
*/
public abstract class Father {
//规定上学的顺序:小学——中学——高中
public void study() {
this.primary();
this.middle();
this.senior();
}
/*
* 下面三个方法都是空实现,具体实现由子类负责
*/
public void primary(){
}
public void middle() {
}
public void senior() {
}
}
package templatemethod;
public class Child extends Father {
/**
* 重写父类的方法,也可以不重写
*/
@Override
public void primary() {
System.out.println("我是这样上小学的!");
}
@Override
public void middle() {
System.out.println("我是这样上中学的!");
}
@Override
public void senior() {
System.out.println("我是这样上高中的!");
}
public static void main(String[] args) {
Father father = new Child();
father.study();
}
}