概述
模板方法是一种很常用的设计方法
核心思想
父类是一个抽象类其中可以有多个抽象方法,然后实现的方法用来调用这些抽象方法。目的是为了调用顺序的一种保证。也是这种设计模式中比较经典的方式。
咱们来看一个很典型的父类
abstract class TmAb
{
protected $pix;
protected $cap;
/**
* 注意这边是一个模板方法 他是有具体实现的,一般确定的是其他方法的调用顺序
* @author aaron <2590419211@qq.com>
*/
public function templateMethod()
{
$this->addPix();
$this->addCaption();
}
abstract protected function addPix();
abstract protected function addCaption();
}
这上面这段代码意味着,我只要是继承这个父类那么我可以自由扩展两个抽象方法,和有权利复写一个实现了顺序的方法(当然这边是不建议这么做的)
主要的思路就是父类实现的那个方法控制了调用的顺序,子类来决定调用的细节,这种手段在框架中是很常见的。
还有一个很通俗的比喻
节目规定了 跳绳 跑步 游泳 这三项的顺序,但是你用什么动作和技巧来完成没有明确说明。就可以理解为是这种模式了。