裝飾模式之我見

2021-06-04 19:06:12 字數 705 閱讀 6738

裝飾模式之我見

當我們想對乙個物件增加功能時一般的做法是對產生該物件的類進行功能擴充套件,利用擴充套件之後的類進行例項化進而達到自己的目的。而裝飾模式是動態的給物件增加一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活(這種靈活性主要體現在客戶端)。

裝飾模式的一般做法是:第一步,建立乙個基類並基於此類建立兩個子類:裝飾物件類和裝飾抽象類,裝飾物件類主要用來例項化被裝飾的物件(其自身可以包含一些特定功能),裝飾抽象類用來產生包含擴充套件功能的子類。第二步,組織需要新增的功能使其包含在裝飾抽象類的子類中。第三步,在客戶端利用多型性為裝飾物件進行動態新增新功能。(在整個過程中語言的繼承和多型的特性是前提保證)

裝飾模式的好處是:對於乙個類而講,一些行為功能只有在特殊情況下才能夠表現出來,如果為新增這些特殊功能對原有類進行新增欄位和功能函式**只會增加原有類的複雜性,而裝飾模式把每個要裝飾的功能封裝在單獨的類中並讓這個類包裝它所要裝飾的物件(這裡如何進行包裝是需要深入研究的),當需要特殊行為時客戶**就可以在執行時根據需要有選擇的,按順序的為物件新增新功能。這樣既可以提高客戶端的靈活性又將起裝飾作用的功能從原有類中移除,簡化了類的設計(單一職責原則),有效地將類的核心職責與裝飾功能區分開。

裝飾模式是將繼承變成了組合。裝飾模式比繼承要靈活,避免了繼承體系的臃腫,而且降低了類與類之間的耦合,

裝飾類通常和被裝飾類具有相同的功能呼叫,所以兩者通常屬於同乙個類,但與被裝飾類相比裝飾類具有更強的

功能性。

簡單工廠模式之我見

簡單工廠模式 factory根據提供給它的資料,返回乙個類的例項。通常它返回的類都有乙個公共的父類 或者介面物件 簡單工廠的作用是例項化物件,而不需要客戶了解這個物件屬於哪個具體的子類。簡單工廠例項化的類具有相同的介面或者基類,在子模擬較固定並不需要擴充套件時,可以使用簡單工廠。如資料庫生產工廠就是...

設計模式之我見(一)

這是我第四次對設計模式進行大規模的掃蕩。第一次是在大三上的時候,自己找設計模式之禪進行掃蕩,第二次是在網上看別人的部落格進行了一次掃蕩,第三次是在面試之前對已經掌握的還有常考的進行掃蕩,第四次是在上設計模式的課程的時候進行的掃蕩。這個部落格又優點也有缺點。優點 覆蓋面廣,這個部落格對於所有的設計模式...

單例模式之我見

單例模式是一種最常見的設計模式,校招中如果要進大公司,必須透徹的掌握單例模式,總結了常見的一些單例模式 首先是最簡單的惡漢模式,惡漢模式是一種最簡單的單例模式 惡漢模式 public class singleton public static singleton getinstance 其實是懶漢載...