模板方法(Template Method)模式就是定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中
使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。
比如去银行需要取号、排队、办业务、评分;这一系列行为只有办业务是因人而异的,就可以将整个流程定义为模板
- 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法
- 具体方法:在抽象类中的普通基本方法。
- 抽象方法:在抽象类中声明,由具体子类实现
- 钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。
子类执行父类模板方法,到办具体业务(doService)时交给子类执行
模板方法可以不在抽象类,但必须由子类继承并重写钩子方法
熟悉Spring IOC源码应该很熟悉,Spring用了很多模板方法,其中Refresh就是
还有AQS的acquire也是模板方法