<?phpuml類圖如下:/* * 裝飾模式:在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。
* * 角色
* 抽象構件(component)角色:定義乙個物件介面,以規範準備接收附加職責的物件,從而可以給這些物件動態地新增職責。
* 具體構件(concrete component)角色:定義乙個將要接收附加職責的類。
* 裝飾(decorator)角色:持有乙個指向component物件的指標,並定義乙個與component介面一致的介面。
* 具體裝飾(concrete decorator)角色:負責給構件物件增加附加的職責。
*///1抽象構件角色
abstract class drink
//具體構件角色
class coffee extends drink
}//生成物件。
$coffee = new coffee();
//$coffee->showprice();
//但是我想動態的為coffee物件新增功能,而不改變原有的類和繼承關係,怎麼辦?
//裝飾模式
//裝飾角色
class decretor extends drink
public function showprice()
public function add()
}//具體裝飾角色
class suger extends decretor
}$suger = new suger($coffee);
$suger->showprice();
?>
php 設計模式 之 裝飾模式
裝飾模式 顧名思義,裝飾模式是一種對物件資料的多次過濾,就像裝飾一樣,一層層的修飾,獲取滿意的結果。裝飾模式共分為兩個部分 1 裝飾者 在這個介面介面下面的類和方法用以對資料進行修飾 即對資料進行過濾修改 2 被裝飾者 這個就是要被過濾的資料介面物件炒菜之前要對買來的菜進行揀菜,洗菜等操作。這個就類...
php 設計模式 之 裝飾模式
裝飾模式 顧名思義,裝飾模式是一種對物件資料的多次過濾,就像裝飾一樣,一層層的修飾,獲取滿意的結果。裝飾模式共分為兩個部分 1 裝飾者 在這個介面介面下面的類和方法用以對資料進行修飾 即對資料進行過濾修改 2 被裝飾者 這個就是要被過濾的資料介面物件炒菜之前要對買來的菜進行揀菜,洗菜等操作。這個就類...
PHP設計模式之裝飾者模式
裝飾者模式動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。abstract class beverage 被裝飾者類 class coffee extends beverage public function cost 以下三個類是裝飾者相關類 class cond...