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等等