模板方法模式包含以下主要角色:
【1】抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个根本方法构成,如下:
① 抽象方法:在抽象类中申明,由具体子类实现。
② 具体方法:在抽象类中已经实现,再具体子类中可以继续或重写它。
③ 钩子方法:在抽象类中已经实现,例如:用于判定的逻辑方法大概定义一个空方法。子类根据情况要不要重写此方法,此方法为钩子方法。例如下面实例中的 isRecipe() 方法。
【2】具体子类(Concrete Class):实现抽象类中所定义的抽象方法和钩子方法,它们是一个顶级逻辑的一个组成步调。
模板方法模式在 Spring 框架应用的源码分析:Spring IOC 容器初始化时运用到了模板方法模式; 【1】抽象类: AbstractApplicationContext继续接口(ConfigurableApplicationContext)其中的 refresh 方法就是模板方法,定义了执行的流程,方法中包含钩子方法、子类需要实现的抽象方法(refreshBeanFactory)、父类已实现的方法等等。
public abstract class AbstractApplicationContext extends DefaultResourceLoader