模板方法模式

  • 通过把不变的行为搬移到超类,去除子类中的重复代码

<?php
/**
 * 模板方法: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类种。
 * 不改变一个算法的结构,即可以重新定义该算法的某些特定步骤
 */

// 模板类
abstract class AbstractClass
{
    abstract protected function primitiveOper1();
    abstract protected function primitiveOper2();

    public function templateMethod()
    {
        $this->primitiveOper1();
        $this->primitiveOper2();
    }
}

// 具体类
class Concrete extends AbstractClass
{
    protected function primitiveOper1()
    {
        echo "具体1\n";
    }
    protected function primitiveOper2()
    {
        echo "具体2\n";
    }
}


// client
try {
    $c = new Concrete();
    $c->templateMethod();
} catch (Exception $e) {
    echo $e->getMessage();
}

蛇叔编程心法
16 声望1 粉丝

爱生活,爱学习,爱工作,足够拼命,足够努力。


« 上一篇
原型模式
下一篇 »
函数调用栈