定义
在父类中定义处理流程的框架,在子类中实现具体处理的模式,就称为模板方法模式
- 父类定义模板方法
- 子类中实现了父类中的抽象模板方法
- 不论子类中的具体实现如何,处理流程应该按照父类中所定义的那样执行
代码实现
父类
public abstract class AbstractDisplay {
// 开始
public abstract void open();
// 打印
public abstract void print();
// 结束
public abstract void close();
public final void display() {
open();
for (int i = 0; i < 5; i++) {
print();
}
close();
}
}
子类
public class StringDisplay extends AbstractDisplay{
@Override
public void open() {
System.out.println("+------------------+");
}
@Override
public void print() {
System.out.println("|-- hello, world --|");
}
@Override
public void close() {
System.out.println("+------------------+");
}
}
public class CharDisplay extends AbstractDisplay {
char aChar = 'a';
@Override
public void open() {
System.out.println(">>>>");
}
@Override
public void print() {
System.out.println("--------" + aChar + "--------");
}
@Override
public void close() {
System.out.println("<<<<");
}
}
\
注意问题:
- 父类中的抽象方法要子类去自己实现,但是这些方法的实现逻辑要依靠父类
- 实现逻辑的方法要声明为final,保证不会被子类重写
特点
父类与子类的相互协作支撑起了整个程序,虽然将更多方法的实现放在父类中会让子类变得更轻松,但是同时也降低了子类的灵活性