裝飾器類的作用:不使用繼承,也能是物件使用新方法。重點是類例項化出來的物件。
裝飾器類(配菜類)也必須繼承food類,否則就不是裝飾器類了(嗯!就是這樣)
裝飾器: 手抓餅實現。
1:food抽象類 -》cake類
2:food抽象類-》peicai抽象類 -》各種配菜類(有新方法)
3:例項化cake類($obj) 將$obj(舊)注入到配菜類中,賦值給物件$obj(新),則既能使用$obj(舊)中的方法 又能使用$obj(新)的方法
<?php
header("content-type: text/html; charset=utf-8");
//定義乙個food抽象類。
abstract class food
//餅,繼承自food類,
class cake extends food
function price()
}//配菜也繼承自food類,這是裝飾器模式的格式。
abstract class peicai extends food
} class egg extends peicai
function price()
function shell() }
$a = new cake;
//echo $a->getfood().'
'; $b = new egg($a);
echo $b->getfood().'
'; echo $b->price();
PHP設計模式 裝飾器模式
web開發筆記 www.chhua.com 每日練習 php設計模式 裝飾器模式 裝飾器模式與介面卡模式的作用幾乎是一樣的,要深刻的理解裝飾模式,就一定要記住 裝飾 二字,很明顯,就是在之前類的基礎上進行一下修飾。也就是說,裝飾器模式必須有父類,然後子類對父類進行裝飾。下面用乙個例項來說明一下裝飾器...
php設計模式之裝飾器模式
裝飾者模式動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比 繼承更有彈性的替代方案。有這樣乙個專案,做乙個餐廳訂餐系統。起初的 結構是這樣的。前面有很多beverage的繼承類,現在遇到的問題是牛奶的價錢 了,那麼所有相關的類,我們都要進行調整,比如milk,sugarandmilk類,這...
PHP設計模式之裝飾器模式
修飾模式,是物件導向程式設計領域中,一種動態地往乙個類中新增新的行為的設計模式。就功能而言,修飾模式相比生成子類更為靈活,這樣可以給某個物件而不是整個類新增一些功能。將所有的功能建立在繼承體系上會導致系統中的類越來越多,而且當你又要修改他們的分支的時候,可能還會出現重複 我們來看下面這個例子,為了計...