模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 T模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板方法模式类结构图:
php实现:
<?php
abstract class AbstractClass{
protected abstract function step1();
protected abstract function step2();
public final function templateMethod(){
$this->step1();
$this->step2();
}
}
class ConcreteClass1 extends AbstractClass{
protected function step1(){
echo "1\n";
}
protected function step2(){
echo "2\n";
}
}
class ConcreteClass2 extends AbstractClass{
protected function step1(){
echo "one\n";
}
protected function step2(){
echo "two\n";
}
}
class Client{
public static function run(){
$class1 = new ConcreteClass1();
$class2 = new ConcreteClass2();
$class1->templateMethod();
$class2->templateMethod();
}
}
Client::run();
~