概述:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
角色:
1、层次类:这是一个抽象类,定义了程序的骨架,抽象细节。
2、细节类:继承抽象类,对细节进行描述,完善程序,扩展父类功能。
具体代码:
层次类:
public abstract class Test{
public void body(){
head();
System.out.println("这是程序骨架");
details();
}
abstract void head()//细节一
abstract void details()//细节二
}
细节类:
public abstract class Test{
@override
void head(){
System.out.println("这是细节一");
}
@override
void details(){
System.out.println("这是细节二");
}
}
客户端:
public static void main(String[] args) {
Test t = new TestA();
t.body();
}
输出:
这是细节一
这是body
这是细节二
优点:
1、重复代码移到父类,去除了子类代码的重复性。
2、通过子类扩展父类,体现了开放-封闭原则。