動態的給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。
人:concretecomponet定義了乙個具體的物件,也可以給這個物件新增職責。
服飾:裝飾抽象類,繼承componet,從外類來擴充套件componet類的功能,但對於componet來說,是無需知道decorator的存在的。
大t恤、垮褲、破球鞋、西裝、領帶、皮鞋:cpmcretadecorator就是具體的裝飾物件,起到給component新增職責的功能。
(1)、person(人類)
public
class
person
private string name;
public
person
(string name)
public
void
show()
}
(2)、finery(服飾類)public
class
finery
extends
person
@override
public
void
show()
}}
(3)、bigtrouser、leathershoes、sneakers、suit、tie、tshirts(具體服飾類)public
class
bigtrouser
extends
finery
}public
class
leathershoes
extends
finery
}public
class
sneakers
extends
finery
}public
class
suit
extends
finery
}public
class
tieextends
finery
}public
class
tshirts
extends
finery
}
public
static
void
main
(string[
] args)
輸出結果:
第一種裝扮:
大t恤 垮褲 破球鞋 裝扮的小明
第二種裝扮:
西裝 領帶 皮鞋 裝扮的小明
裝飾模式是為已有的功能動態地新增更多功能的一種方式。
當系統需要新功能的時候,是向舊的類中新增新的**,這些新加的**通常裝飾了原有類的核心職責或主要行為。
參考:《大話設計模式》
設計模式(五) 裝飾模式
什麼是裝飾模式?裝飾模式 decorator 動態的給乙個物件增加一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。一般而言,當系統需要實現新功能時候,我們會向舊的類中新增新的 以擴充套件其功能。我們將這種行為稱為對主類的裝飾,但這種做法的問題在於,在主類中增加了屬性和方法,從而增加了主類...
設計模式(五)裝飾模式
一 概念 特點 裝飾者和被裝飾者擁有相同的超型別 可能是抽象類也可能是介面 在裝飾類中包含乙個被裝飾元件類的物件引用 可以為被裝飾物件新增額外的功能 在裝飾類中重寫被裝飾元件類中的方法,並對被裝飾元件類中對應的方法呼叫 因為裝飾者和被裝飾者擁有相同的抽象型別,因此在任何需要原始物件 被包裝 的場合,...
設計模式(五)裝飾器模式
設計模式專欄 裝飾器模式 decorator pattern 允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。我們通過下面的例項來演示裝...