解讀設計模式----裝飾模式(Decorator Pattern)

來源:互聯網
上載者:User

裝飾模式(Decorator)也叫封裝器模式(Wrapper)。以“裝飾”的含義生動形象地描繪了“動態地給一個對象添加一些額外的職責”的意圖。GOF在《設計模式》一書中給出的定義為:動態地給一個對象添加一些額外的職責。裝飾模式充分利用了繼承和彙總的優勢,創造出無與論比的設計美學。就增加功能來說,Decorator模式相比產生子類更為靈活。

UML圖:

一、使用Decorator模式的動機

現在有這樣一個情境,要求我們為一個對象動態添加新的職責,這個職責並不修改原有的行為,而是在原有行為的基礎上添加新的功能,就好比我們在吃薯條的時候塗上新鮮美味的番茄汁一般。

從物件導向的角度來說,我們要為一個對象添加一新的職責完全可以利用繼承機制來實現,但是這樣的設計會導致一個問題,“過度地使用繼承來擴充項物件的功能”由於繼承為類型引入的靜態特質,使得這種擴充方式缺乏靈活性;並且隨著字類的增多(擴充功能的增多),各種子類的組合(擴充功能的組合)會導致更多子類的膨脹,也就是所謂的類爆炸。如何使“對象功能的擴充”能夠根據需要來動態地實現同時又避免“擴充功能的增加”帶來的類爆炸問題?從而使得任何“功能擴充變化”所導致的影響將為最低?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.