裝飾模式:動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。裝飾模式結構圖如下
裝飾模式適用場合:當需要給系統新增新的功能時,而這些新增的功能僅僅是為了滿足一些只在某種特定情況下才會執行的特殊行為的需要,它把每個裝飾的功能放在單獨的類中,並讓這個類包裝它所要裝飾的物件,因此,當需要執行特殊行為時,客戶端就可以在執行時候根據需要有選擇地、按順序地使用裝飾功能包裝物件。
以小明搭配衣服為例。
定義乙個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為待增加功能 即...