天天看點

PHP面向對象深入研究之【組合模式與裝飾模式】

定義:組合模式定義了一個單根繼承體系,使具有截然不同職責的集合可以并肩工作。

一個軍隊的案例,

軍隊整合成員,輸出火力

軍隊進一步整合其他軍隊

更好的方式,支援新增,移除等等其他功能。

添加異常處理

點評:組合模式中的一切類都共享同一個父類型,可以輕松地在設計中添加新的組合對象或局部對象,而無需大範圍地修改代碼。

最終的效果,逐漸優化(完美):

更牛逼的組合處理,

點評:Unit 基礎,CompositeUnit複合中實作add與remove。軍隊繼承Composite,射手繼承Archer。這樣射手中就不會有多餘的add與remove方法了。
裝飾模式幫助我們改變具體元件的功能。

看例子

點評:不具有靈活性,我們不能同時獲得鑽石與被污染的土地的資金情況。

裝飾模式使用組合和委托而不是隻使用繼承來解決功能變化的問題。

看例子:

點評:這個模型具有擴充性。我們不需要建立DiamondPollutionPlains對象就可以建構一個鑽石被污染的對象。

一個更逼真的例子

點評:這裡有一種遞歸的感覺,一層調用一層。模式是牛人總結出來用于靈活的解決一些現實問題的。牛!給開發多一點思路。 本文轉自TBHacker部落格園部落格,原文連結:http://www.cnblogs.com/jiqing9006/p/5183162.html,如需轉載請自行聯系原作者