模板方法模式
在一个方法在定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
- 抽象类专注算法本身,子类提供完整实现
- 代码复用最大化
例子
abstract class AbstractClass{
final void templateMethod(){
operation1();
operation2();
concreteOperation();
hook();
}
abstract void operation1();
abstract void operation2();
final void concreteOperation(){
// 实现
}
void hook(){}
}
模板方法里可以有三种函数:
- 抽象方法
- 子类必须提供具体实现
- 具体实现
- 提供了默认实现,子类可以选择覆盖
- 钩子
- 可选步骤