模板方法模式
通过把不变的行为搬移到超类,去除子类中的重复代码
<?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();
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。