首页 / 网页编程 / PHP / PHP设计模式之装饰模式
PHP设计模式之装饰模式2009-12-30下面是一个简单类,帮助了解装饰模式,希望能对大家有帮助,有些地方改成中文,便于了解。我要到饭馆吃饭,程序的结果是打印对我吃的东西的描述和计算价钱。这样一层一层的包下来, 像是大口袋套小口袋,就是所谓的装饰模式。//基类
class 食物{
var $des="食物";
var $cost;
function getdes(){
return $this->des;
}
function getcost(){
return $this->cost;
}
}
//被装饰者类
class 米饭 extends 食物{
var $des="米饭";
var $cost=0.44;
}
//装饰者类与被装饰者继承自同一个基类
class 菜 extends 食物{
var $obj;
var $des="";
var $cost;
}
//细分的装饰者
class 炒土豆丝 extends 菜{
var $obj;
var $des="土豆丝";
var $cost=0.10;
function __construct($obj){
$this->obj=$obj;
}
function getdes(){
return $this->obj->getdes().$this->des;
}
function getcost(){
return $this->obj->getcost()+$this->cost;
}
}
//有一个细分的装饰者
class 咸菜 extends 菜{
var $obj;
var $des="咸菜";
var $cost=0.10;
function __construct($obj){
$this->obj=$obj;
}
function getdes(){
return $this->obj->getdes().$this->des;
}
function getcost(){
return $this->obj->getcost()+$this->cost;
}
}
//更多的菜
......
//测试代码
$午饭= new 米饭();
$午饭=new 土豆丝($午饭);
$午饭=new 咸菜($午饭);
echo $午饭->getdes();//outputs 米饭土豆丝咸菜
echo $午饭->getcost();//outputs 0.64