模板设计方法包含了实际的”模板方法“,模板方法定义了一个算法的步骤,并允许为子类为一个或者多个步骤提供具体实现。
模板方法模式在一个方法中定义了抑恶个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的基础上重新定义算法的某些步骤。模板设计模式中由超类主导一切,拥有算法并且保护算法,使得代码复用最大化。并且容易修改,弹性高,有子类实现其的完整性。所以说模板设计模式实际应用场景。
下面是模板模式超类的定义:
//模板设计模式代码结构
abstract class TemplateAbatractClass(){
//模板方法,定义算法
//被final声明以免子类改变算法的顺序
public final templateMethod(){
//按照定义提供算法,执行程序,可以采用一些流程控制
}
//具体操作延迟到子类是实现
abstract void primitveOperation1();
abstract void primitveOperation2();
//具体操作且共用的方法定义在超类中
//可以被模板方法或子类直接使用
final void concreterOperation(){
//实现
}
//可包含钩子方法
//对于钩子方法,子类可以视情况决定要不要覆盖他们
void hook(){
//钩子方法
}
}