各位博友晚上好,又到了每天和大家分享學習成果的時候了,前幾天一直在學習設計模式中的3大原則:單一職責,開放封閉,依賴倒轉原則,今天終於走上正路開始學習裝飾模式l了,閒話少說,先來介紹一下裝飾模式:
定義:動態的給乙個物件新增額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。
component是定義了乙個物件的介面,可以給這些物件動態的新增職責,concretecomponent是乙個定義了乙個具體的物件,也可以給這個物件動態的新增一些職責,decorator是乙個抽象裝飾類,它繼承自component,從外類來擴充套件component,但對於component來說,它是不用自導decorator的存在的,至於concreatedecorator就是具體的裝飾物件,起到給component起到新增職責的功能。
裝飾模式是利用setcomponent來對物件進行包裝,這樣每個裝飾物件就和如何使用這個物件分離開了,每個裝飾物件只關心自己的功能,不用關係如何被新增到物件鏈當中。
如果只有乙個concretecomponent類而沒有component類,那麼decorator可以是concreatecompoent的乙個子類,同樣的道理,如果只有乙個decorator類和concreatcompoent合併到乙個類。
系統的總結一下裝飾模式:
裝飾模式是為了給已有的功能新增更多功能的一種方式。
當系統需要更新功能的時候,是向舊的類中新增新的**。這些**通常裝飾了原有類的核心功能和職責。
比如所在主類中新增了新的字段,方法,邏輯,從而增加了主類的複雜度,而這些新加入的功能僅僅是為了滿足一些某種特定情況下才會執行的特殊行為的需要,而裝飾模式卻提供了乙個很好的解決方案,它把每個裝飾的功能放在單獨的類中,並讓這個類包裝它要裝飾的物件,因此,當要執行特殊需要時,客戶端**可以在執行時根據需要有選擇的,按順序的使用裝飾功能來包裝物件。
裝飾模式的優點:
把類中原有的裝飾功能從類中搬出,這樣可以簡化原有的類。更有效的將裝飾功能和類的核心功能區分開來,而且可以去除相關類中重複的裝飾邏輯。
天色已晚,各位博友也早些休息吧,感謝對darren部落格的支援darren。
軟體設計模式
軟體設計模式是軟體設計經驗的總結,是對軟體設計中反覆出現的設計問題的成功解決方案的描述。四元素 名稱 問題 解決方案 效果 1 重用設計,重用設計比重用 更有意義,它會自動帶來 的重用 2 為設計提供公用的詞彙,每個模式名就是乙個設計詞彙,其概念使得程式設計師間交流更方便 3 在開發文件中採用模式詞...
軟體設計模式
建立型設計模式 類模式 物件模式 靜態工廠方法模式 static factory 工廠方法 factory method 抽象工廠 abstract factory 單例模式 singleton 原型模式 prototype 建造模式 builder 介面卡模式 adapter 介面卡模式 adap...
軟體設計模式
軟體設計模式 軟體設計模式 design pattern 又稱設計模式,是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性 程式的重用性。總的來說 就是 設計經驗的總結,能夠讓 穩定,拓展性更強,一系列程式設計的思想。設計模式...