模板方法(Template Method)设计模式中使用了一个类方法templateMethod(),该方法是抽象类中的一个具体方法, 这个方法的作用是对抽象方法序列排序,具体实现留给具体类来完成,关键在于模板方法模式定义了操作中算法的"骨架",而由具体类来实现。
abstract class Drink{ public function makeDrink() { $this->prepareMaterial(); $this->action(); $this->done(); } abstract function prepareMaterial(); abstract function action(); abstract function done(); } class AppleJuice extends Drink{ public function prepareMaterial() { echo "苹果削皮切块"; } public function action() { echo "放入榨汁机压榨"; } public function done() { echo "一杯苹果汁做好了"; } } class Coffee extends Drink{ public function prepareMaterial() { echo "准备咖啡豆"; } public function action() { echo "放入咖啡机现磨"; } public function done() { echo "一杯现磨咖啡做好了"; } } $juice=new AppleJuice(); $juice->makeDrink(); $coffee=new Coffee(); $coffee->makeDrink();