裝飾者模式()
裝飾者模式擁有一個設計非常巧妙的結構它可以動態添加對象功能在基本的設計原則中有一條重要的設計准則叫做合成/聚合復用原則根據該原則的思想代碼復用應該盡可能使用委托而不是使用繼承因為繼承是一種緊密耦合任何父類的改動都會影響其子類不利於系統維護而委托則是松散耦合只要接口不變委托類的改動並不會影響其上層對象
裝飾者模式就充分運用了這種思想通過委托機制復用系統中的各個組件在運行時可以將這些功能組件進行疊加從而構造一個超級對象使其擁有所有這些組件的功能而各個子功能模塊被很好地維護在各個組件的相關類中擁有整潔的系統結構
在本小節中提到裝飾者模式是因為這種結構可以很好地將功能組件和性能組件進行分離彼此互不影響並在需要的時候有機地結合起來為了更好地理解裝飾者模式如何做到性能模塊的分離首先需要對裝飾者模式做一個總體的了解
注意裝飾者模式可以有效分離性能組件和功能組件從而提升模塊的可維護性並增加模塊的復用性
裝飾者模式的基本結構如圖所示
圖 裝飾者模式結構
裝飾者(Decorator)和被裝飾者(ConcreteComponent)擁有相同的接口Component被裝飾者通常是系統的核心組件完成特定的功能目標而裝飾者則可以在被裝飾者的方法前後加上特定的前置處理和後置處理增強被裝飾者的功能
裝飾者模式的主要角色如表所示
表 裝飾者模式角色
裝飾者模式的一個典型案例就是對輸出結果進行增強比如現在需要將某一結果通過HTML進行發布那麼首先就需要將內容轉化為一個HTML文本同時由於內容需要在網絡上通過HTTP流傳故還需要為其增加HTTP頭當然作為一個更復雜的情況可能還要為其安置TCP頭等但作為一個示例這裡做簡化處理
返回目錄Java程序性能優化讓你的Java程序更快更穩定
編輯推薦
Java程序設計培訓視頻教程
JEE高級框架實戰培訓視頻教程
JME移動開發實戰教學視頻
Visual C++音頻/視頻技術開發與實戰
Oracle索引技術
ORACLEG數據庫開發優化指南
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27824.html