裝飾器模式(decorator)

2021-10-07 02:14:53 字數 524 閱讀 7125

3. 討論

4. 完整**位址

gof的定義

attach additional responsibilities to an object dynamically. decorators provide a flexible alternative to subclassing for extending functionality.

動態的為乙個物件新增功額外職責。裝飾器模式為擴充套件功能,提供了一種靈活的方法來代替子類化。

簡單來說就是: 就是我們要為乙個類增加額外的功能(或者說對某些方法做一些增強),除了使用繼承外,還有另外一種更靈活的方法:組合.

看乙個具體事例:

領導讓寫乙個檔案讀寫介面,要支援壓縮讀寫, 帶快取的讀寫, 加密讀寫, 帶資料格式的讀寫 4個功能。 那我們可以使設計乙個fstream介面,再設計4個類 zipfstream,bufferfstream, cipherfstream, datafstream 實現 fstream 介面。 如下圖所示:

裝飾器模式 decorator

所有的說明和解釋都在 中有注釋來標明 package mode.decorator 這裡定義乙個介面,在介面中定義我們要執行的操作。以後所有的裝飾器以及我們要裝飾的物件都要實現這個介面。有了這樣的大前提,我們就可以其用 sourcable來定義我們的裝飾器和要裝飾的物件了 public inte c...

裝飾器模式 Decorator

設計原則 1 類應該對擴充套件開發,對修改關閉。特點 1 裝飾物件和真實物件有相同的介面。這樣客戶端物件就可以以和真實物件相同的方式和裝飾物件互動。2 裝飾物件包含乙個真實物件的引用 reference 3 裝飾物件接收所有來自客戶端的請求,它把這些請求 給真實的物件。4 裝飾物件可以在 這些請求之...

裝飾器模式(Decorator)

裝飾器模式的作用 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾器模式比生成子類更加靈活。裝飾器模式結構圖 各個類或介面的職能 component是定義乙個物件介面,可以給這些物件增加功能。concretecomponent定義乙個具體的物件。decorator是裝飾抽象類,為物件增加功能...