(五)設計模式 裝飾模式

2021-10-03 01:17:14 字數 1513 閱讀 9260

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

人: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 允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。我們通過下面的例項來演示裝...