裝飾器設計模式

2021-08-07 12:42:18 字數 1155 閱讀 4362

裝飾者模式的適用場景

1、在不影響其他物件的情況下,以動態、透明的方式給單個物件新增職責。

2、需要動態地給乙個物件增加功能,這些功能也可以動態地被撤銷。  當不能採用繼承的方式對系統進行擴充或者採用繼承不利於系統擴充套件和維護時。

參與者:

component: 抽象構件,可以給這些物件動態地新增職責(理解為抽象主體類)。

concretecomponent:具體構件。是定義了乙個具體的物件(具體主體類)。

decorator: 抽象裝飾類。是裝飾抽象類,繼承了component,從外類來擴充套件component類的功能,但對於component來說,是無需知道decorator存在的 (理解為抽象穿戴類)。

concretedecorator:具體裝飾類,起到給component新增職責的功能(具體穿戴類)。

說白了要先有個主體,然後往主體上新增新的功能.

(比方,先抽象飲品(component: 抽象構件),然後定義乙個具體奶茶類繼承它(concretecomponent:具體構件))

在抽象乙個配料類(decorator: 抽象裝飾類),然後定義乙個醣類繼承抽象配料類,乙個冰類繼承抽象配料類(concretedecorator:具體裝飾類).

namespace 裝飾器模式

}//主體抽象類,比如說是乙個人,其它的穿戴類,往上面新增

class magic : basegame

}//實現主體類

class basedecorator : basegame

public override void show()

}//定義穿戴類

class 帶頭盔 : basedecorator

public override void show()

}//實現穿戴類

最後結果

設計模式 裝飾器模式

裝飾器模式 decorator pattern 允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。public inte ce playe...

設計模式 裝飾器模式

裝飾者模式的應用場景 裝飾者模式 decorator pattern 是指在不改變原有物件的基礎之上,將功能附加到物件上,提供了比繼承更有彈性的替代方案 擴充套件原有物件的功能 屬於結構型模式。裝飾者模式在我們生活中應用也比較多如給煎餅加雞蛋 給蛋糕加上一些水果 給房子裝修等,為物件擴充套件一些額外...

設計模式 裝飾器模式

定義 裝飾模式可以動態的給乙個物件增加一些額外的功能 增強功能 相比於繼承,裝飾模式能對不支援繼承的類進行增強 並且比繼承更靈活,不需要生成大量的子類。角色 實現 public abstract class house public abstract void sleep public class ...