設計模式之裝飾者模式

該模式可以避免濫用繼承,在使用對象組合的方式,就能做到在運行時裝飾類,此后便能在不修改任何底層代碼的情況下給對象賦予新的職責。

設計原則

類應該對擴展開放,對修改關閉

  • 好處:在不修改現(xiàn)有代碼的情況下,就可搭配新的行為,這樣的設計具有彈性,可以應對改變,可以接受新的功能來應對改變的需求
  • 遵循開放-關閉原則,通常會引入新的抽象層次,增加代碼的復雜度,需要我們把注意力集中在設計中最有可能改變的地方,然后應用開放-關閉原則。
  • 如果每個地方都采用開放-關閉原則也是沒有必要的,還會導致代碼變得復雜且難以理解

要求

  • 裝飾者和被裝飾對象有相同的父類型
  • 可以用一個或者多個裝飾者包裝一個對象
  • 在任何需要原始對象的場合,可以用裝飾過的對象代替他
  • 裝飾者可以在所委托被裝飾者的行為之前或者之后,加上自己的行為,以達到特定目的
  • 對象可以在任何時候被裝飾,可以在運行時動態(tài)的不限量的用裝飾者來裝飾對象

定義

裝飾者模式動態(tài)的將責任附加到對象上,若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。


Java中裝飾者模式使用突出的部分就是在IO部分。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 前言 最近看了一部英劇《黑鏡》,片中講述科技與人性碰撞可能帶來的一系列社會負影響,包括泛娛樂社會對底層人民精神的麻...
    RoadToGeek閱讀 577評論 0 3
  • 1.場景 最近玩吃雞玩的很嗨,我們可以看到游戲里面五花八門的裝備,應接不暇。玩的同時也不禁感嘆開發(fā)者的強大,那么假...
    菜小軒526閱讀 892評論 1 2
  • 裝飾者模式可以做到在不修改任何底層代碼的情況下,給對象增加的新的方法。首先,我們通過對一個現(xiàn)實問題的模擬分析,了解...
    六尺帳篷閱讀 1,017評論 0 9
  • 晚安
    吳三石石石石ah閱讀 92評論 0 0
  • 春水一湖思落日,愁云萬里下城西。 素容空照情如鏡,難映君心比翼齊。 作者王永豪(新韻) 注:海棠社子丘老師提供的照...
    王永豪閱讀 297評論 9 4

友情鏈接更多精彩內(nèi)容