設計模式之裝飾模式(筆記)

2021-07-02 19:19:35 字數 1454 閱讀 8419

裝飾模式:動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。裝飾模式結構圖如下

裝飾模式適用場合:當需要給系統新增新的功能時,而這些新增的功能僅僅是為了滿足一些只在某種特定情況下才會執行的特殊行為的需要,它把每個裝飾的功能放在單獨的類中,並讓這個類包裝它所要裝飾的物件,因此,當需要執行特殊行為時,客戶端就可以在執行時候根據需要有選擇地、按順序地使用裝飾功能包裝物件。

以小明搭配衣服為例。

定義乙個iperson介面

public

inte***ce iperson

定義乙個具體物件person

public

class

person

implements

iperson

public

person(string name)

@override

public

void

show()

}

定義乙個裝飾類finery繼承iperson

public

class

finery

implements

iperson

@override

public

void

show() }}

定義若干個具體的裝飾物件,繼承裝飾類finery

public

class

tshirt

extends

finery

}public

class

trouser

extends

finery

}public

class

leatershoes

extends

finery

}public

class

netshoes

extends

finery

}public

class

suit

extends

finery

}

客戶端**

public

static

void

main(string args)

結果顯示:

第一種裝扮 :

t恤衫,褲子,網鞋,打扮的小明

第二種裝扮 :

西裝,褲子,皮鞋,打扮的小明

設計模式學習筆記之裝飾模式

裝飾模式 包裝器 動態地給物件新增一些額外的職責。即動態擴充套件乙個物件的功能,而不需要改變原始類 具體元件 類和 具體裝飾 類是該模式最重要的兩個角色 抽象元件 author zhenyonghe eg.假設系統中有乙個bird抽象類以及bird類的乙個子類 sparrow。sparrow類實現了...

設計模式之裝飾設計模式

1.目的 動態擴充套件類的行為 開閉原則 對擴充套件開放,對修改關閉 2.要點 裝飾類和被裝飾類都實現同乙個介面或者繼承同乙個類 3.具體實現 被裝飾元件介面 被裝飾元件實現類實現 抽象類構建被裝飾元件實現被裝飾元件介面 裝飾類繼承抽象類 裝飾類 重寫抽象類方法 裝飾 4.例項 被裝飾類介面 pub...

設計模式之裝飾模式

有時如果需要對某乙個類增加乙個功能,可以使用繼承來實現。但是如果想要只是對某乙個物件來增加一項功能,則可能會用到裝飾模式。裝飾模式的主要作用是動態的給某乙個物件新增某些功能。如果此時使用繼承來新增功能時,會產生大量的子類,導致難以維護。裝飾模式的簡要類圖如下 其中 component為待增加功能 即...