設計模式(六) Decorate

2021-09-06 08:53:16 字數 796 閱讀 1819

裝飾設計模式

當想要對已有物件進行功能增強時,可以定義乙個類,將已有物件傳入,

基於已有物件的功能,並提供加強功能,那麼,自定義的該類就稱為裝飾類

裝飾類通常會通過構造方法接收被裝飾的物件,並基於被裝飾物件的功能,提供更豐富的功能

裝飾模式比繼承要靈活,避免了**臃腫,而且降低了類與類之間的關係

裝飾類因為增強已有物件,具備的功能和已有的是相同的,只不過提供了更強的功能,

所以裝飾類和被裝飾類通常都屬於乙個體系中的

reader 繼承關係

|--textreader

|--buffertextreader

|--mediareader

|--buffermediareader

|--filereader

|--bufferfilereader

|--webreader

|--bufferwebreader

reader 裝飾關係

|--textreader

|--mediareader

|--filereader

|--webreader

|--bufferreader

具體實現步驟

1, 在類的建構函式中傳入要操作的類

2,使用增強傳入類的功能

class source 原始類

}class supersource 裝飾類

public void superfunction()

}通常情況下,裝飾類和要裝飾的類一般都繼承同乙個類和介面,建構函式中使用多台進行型別傳入

c 裝飾模式(decorate)

裝飾模式 動態地給乙個物件新增一些額外的職責。就增加功能來說,裝飾模式相比生成子類 更為靈活。有時我們希望給某個物件而不是整個類新增一些功能。比如有乙個手機,允許你為手機新增特性,比如增加掛件 螢幕貼膜等。一種靈活的設計方式是,將手機嵌入到另一物件中,由這個物件完成特性的新增,我們稱這個嵌入的物件為...

c 裝飾模式(decorate)

裝飾模式 動態地給乙個物件新增一些額外的職責。就增加功能來說,裝飾模式相比生成子類 更為靈活。有時我們希望給某個物件而不是整個類新增一些功能。比如有乙個手機,允許你為手機新增特性,比如增加掛件 螢幕貼膜等。一種靈活的設計方式是,將手機嵌入到另一物件中,由這個物件完成特性的新增,我們稱這個嵌入的物件為...

設計模式 (六)設計模式原則

1 開閉原則 ocp 是程式設計中最基礎也是最重要的設計原則 2 乙個軟體實體如類,模組和函式應該對擴充套件開放 提供方 對修改關閉 使用方 用抽象構建框架,用實現擴充套件細節。3 當軟體需要變化時,盡量通過擴充套件軟體實體的行為來實現變化,而不是通過修改已有的 來實現變化。4 程式設計中使用其他原...