模板方法模式可以所是最为常见的一种设计模式了,出乎很多人意料的是,很多人已经在他们的代码中用到了模板方法模式而没有意识到自己用到了这个模式,模板方法模式几乎可以在所有的抽象基类中找到。 通过模板方法模式我们可以定义一个操作的骨架,而将该操作中的各个步骤的具体实现延迟至派生类中。代表这些具体实现的方法同常称作基本方法(Primitive Method),而调用这些基本方法的方法叫做模板方法(Template Method)。呵呵,你这是已经明白模板方法模式名字的由来了。 模板方法的结构图:

<?php
//模版模式
abstract class Goods {
final public function buy($goodsName) {
$goods = $this->selectGoods($goodsName);
$order = $this->buyGoods($goods);
$send = $this->sendGoods($order);
}
abstract public function selectGoods($goodsName);
abstract public function buyGoods($select);
abstract public function sendGoods($order);
}
class PSV extends Goods {
function selectGoods($goodsName) {
$goods = $goodsName;
return $goods;
}
function buyGoods($goods) {
$order = 'order'.$goods;
return $order;
}
function sendGoods($order) {
$success = $order.'is OK';
echo $success;
}
}
$myPSV = new PSV();
$myPSV->buy('PSV');
?>