1.什么是模板方法?
模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的,重复代码全部在父类里面,不同业务的,抽取给子类进行实现。抽取过程—抽象方法。(解释一下通俗的来说就是父类中的一部分操作定义成抽象的,交给子类来实现

见代码:
①首先,定义一个模板。模板中把办理业务用作核心部分,让子类来实现。其他公共的相同的部分保留在模板中

//模板方法
public abstract class BankTemplateMethod {

	// 1.取号排队
	public void takeNumber() {
		System.out.println("取号排队。。");
	}

	// 2.每个子类不同的业务实现,由各自子类实现.
	abstract void transact();

	// 3.评价
	public void evaluate() {
          System.out.println("反馈评价..");
	}
	
	public void process(){
		takeNumber();
		transact();
		evaluate();
	}
}

②具体的模板方法的子类

public class DrawMoney extends BankTemplateMethod {
	@Override
	void transact() {
		System.out.println("我要取款");
	}
}

③客户端测试

public class Client {
	 public static void main(String[] args) {
		 BankTemplateMethod bankTemplate=new DrawMoney();
		 bankTemplate.process();
	}	
}

2.什么时候使用模板方法
实现一些操作时,整体步骤很固定,但是呢。就是其中一小部分容易变,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。

3.开发中应用场景
其实,各个框架中,都有模板方法模式的影子。
数据库访问的封装、Junit单元测试、servlet中关于doGet/doPost方法的调用
Hibernate中模板程序、spring中JDBCTemplate,HibernateTemplate等等