在父類中定義處理流程的框架,在子類中實現具體處理的模式就稱爲模板方法模式
抽象類(AbstractClass)php
抽象類不只負責實現模板方法,還負責聲明在模板方法中所使用到的抽象方法。算法
具體類(子類)框架
該角色負責具體實現抽象類角色中定義的抽象方法。這裏實現的方法將會在抽象類角色的模板方法中被調用。函數
# 抽象類 AbstractClass.php <?php namespace App\Test; abstract class AbstractClass { /** * 模板方法,定義執行的流程 */ final public function main() { $this->operate1(); $this->operate2(); } /** * 操做1 * @return mixed */ abstract protected function operate1(); /** * 操做2 * @return mixed */ abstract protected function operate2(); }
# 具體類1 ConcreteClassOne.php <?php namespace App\Test; class ConcreteClassOne extends AbstractClass { /** * 操做1 * @return mixed|void */ protected function operate1() { echo 'ConcreteClassOne: this is operate1'; } /** * 操做2 * @return mixed|void */ protected function operate2() { echo "ConcreteClassOne: this is operate2"; } }
# 具體類2 ConcreteClassTwo <?php namespace App\Test; class ConcreteClassTwo extends AbstractClass { /** * 操做1 * @return mixed|void */ protected function operate1() { echo 'ConcreteClassTwo: this is operate1'; } /** * 操做2 * @return mixed|void */ protected function operate2() { echo 'ConcreteClassTwo: this is operate2'; } }