经典场景
header("Content-type:text/html;charset=utf-8");
class FanDian{
public function fan(){
return "面条";
}
public function cai(){
return "炒菜";
}
public function tang(){
return "蛋花汤";
}
}
class SouthDian{
public function fan(){
return "大米饭";
}
public function cai(){
return "烧菜+奶油";
}
public function tang(){
return "蛋花汤";
}
}
class BjDian{
public function fan(){
return "大米饭";
}
public function cai(){
return "炒菜";
}
public function tang(){
return null;
}
}
$fd = new FanDian();
echo $fd->tang();
具体实现
header("Content-type:text/html;charset=utf-8");
class FD{
protected $fanCreator = null;
protected $caiCreator = null;
protected $tangCreator = null;
public function __construct($f,$c,$t){
$this->fanCreator = $f;
$this->caiCreator = $c;
$this->tangCreator = $t;
}
public function createFan(){
return $this->fanCreator->fan();
}
public function createCai(){
return $this->caiCreator->cai();
}
public function createTang(){
return $this->tangCreator->tang();
}
}
class NorthCook {
public function fan(){
return "面条";
}
public function cai(){
return "炒菜";
}
public function tang(){
return "蛋花汤";
}
}
class SouthCook {
public function fan(){
return "大米饭";
}
public function cai(){
return "烧菜+奶油";
}
public function tang(){
return "海鲜汤";
}
}
$fd = new FD(new NorthCook(),new NorthCook(),new SouthCook());
echo $fd->createFan() , "<br/>";
echo $fd->createCai() , "<br/>";
echo $fd->createTang() , "<br/>";