動態地為類的例項新增功能,一層一層的套功能
先定義好介面
inte***ce booking
這個就是裝飾器實現了booking,通過建構函式傳遞booking物件進來
abstract class bookingdecorator implements booking
}
這個類直接實現booking
class doubleroombooking implements booking
}
這個類繼承了裝飾器,實現了booking
class wifi extends bookingdecorator
}class extrabed extends bookingdecorator
public function getdescription(): string
}
$booking = new doubleroombooking();
//繼承裝飾器的可以一層層套
$booking = new wifi($booking);
$booking = new extrabed($booking);
結構型設計模式 裝飾器模式
說明 裝飾器模式 decorator pattern 允許 向乙個現有的物件新增新的功能,同時又不改變其結構 這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。實現方法 1.新建乙個介面 pu...
結構型設計模式 裝飾模式
裝飾模式動態地給乙個物件新增一些額外的職責,就增加功能來說,它比生成子類更靈活。也可以這樣說,裝飾模式把複雜類中的核心職責和裝飾功能區分開了,這樣既簡化了複雜類,有去除了相關類中重複的裝飾邏輯。裝飾模式沒有通過繼承原有類來擴充套件功能,但卻達到了一樣的目的,而且比繼承更加靈活,所以可以說裝飾模式是繼...
結構型設計模式 裝飾模式
先列舉乙個生活中的場景。假如我們買了一套房 買不起。但是是乙個毛胚房 指沒有任何裝修的房子 只能住。那麼我們為了讓房子變得溫馨舒適,就要進行裝修了,這樣沒有改變房子原本用來居住的功能,還增加了很多新的功能 比如做飯 那麼這一期的裝飾模式就是基於這樣的動機,在不改變原有功能的情況下新增新功能。那麼給乙...