程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP設計模式之裝飾模式

PHP設計模式之裝飾模式

編輯:PHP綜合

下面是一個簡單類,幫助了解裝飾模式,希望能對大家有幫助,有些地方改成中文,便於了解。

我要到飯館吃飯,程序的結果是打印對我吃的東西的描述和計算價錢。

這樣一層一層的包下來, 像是大口袋套小口袋,就是所謂的裝飾模式。

//基類
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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved