12 裝飾模式

2021-10-01 22:35:01 字數 1455 閱讀 4200

在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。

裝飾模式的類圖

component為抽象構件,是乙個介面或抽象類,定義最核心的物件,也就是最原始物件;concretecomponent 為具體構件,是抽象構件的實現,需要裝飾的物件;decorator是裝飾角色,一般是乙個抽象類,它的屬性裡必然有乙個private變數指向component抽象構件;concretedecorator是具體裝飾角色,實現類decorator是實際裝飾類。

裝飾模式的通用原始碼

抽象構件

public

abstract

class

component

具體構件

public

class

concretecomponent

extends

component

}

抽象裝飾者

public

abstract

class

decorator

extends

component

//委託給被修飾者執行

@override

public

void

operate()

}

具體的裝飾類

public

class

concretedecorator1

extends

decorator

//定義自己的修飾方法

private

void

method1()

//重寫父類的operation方法

public

void

operate()

}

public

class

concretedecorator2

extends

decorator

//定義自己的修飾方法

private

void

method2()

//重寫父類的operation方法

public

void

operate()

}

注意:原始方法和裝飾方法的執行順序在具體的裝飾類是固定的,可以通過方法過載的方式實現多種執行順序

場景類

public

class

client

}

12 裝飾模式

裝飾模式 動態地給乙個物件新增一些額外的職責 一般情況下可用繼承實現類的功能拓展 英雄抽象類 class abstracthero 具體英雄 蓋倫 class gailun public abstracthero void show status 給英雄新增裝飾物,他依舊還是個英雄 class ab...

設計模式之裝飾者模式12

有一次考試,小明考了60分,然後學校出了乙個成績單,要家長簽字。60分,王老漢肯定不簽字。這時,需要加兩個裝飾。1 最高分是70分,我考了60分。2 我排名從40到30名。學校給的報告單 public abstract class schoolreport 四年級真實的成績單 public clas...

《設計模式之禪》讀書筆記 12 裝飾模式

定義 裝飾模式可以動態地給乙個物件新增一些額外的職責。類圖 component抽象構件 component是乙個介面或者是抽象類,就是定義我們最核心的物件,也就是最原始的物件。concretecomponent具體構件 concretecomponent是最核心 最原始 最基本的介面或抽象類的實現。...