裝飾者模式

2021-06-30 16:07:49 字數 1390 閱讀 3433

通俗的說明一下裝飾者模式。舉乙個平常生活中的例子衣服,我們都知道衣服有不同的顏色,假設衣服初始顏色是純潔的白色,現在我們要對這衣服裝飾的更加漂亮,這時我們需要加入其他的顏色進行裝飾,這些顏色可以是紅色、藍色、綠色等等。根據裝飾者模式的原理我們可以從以上的例子中抽象出各種角色出來。

首先被裝飾者:衣服

被裝飾者實體:白色的衣服

裝飾者:顏色(紅、藍、綠等等)

裝飾者實體:在白衣服的基礎上天了其他顏色的衣服。

具體**實現過程:

1、clothes介面

public inte***ce clothes
2、concretecloth類

public string setclothcolor() 

public float getprice()

3、接著就是裝飾者類colordecorator
public abstract class colordecorator implements clothes

public string setclothcolor()

public float getprice()

}

4、在裝飾者類的基礎上來建立具體的裝飾者類:

redclothe:

public class redclothe  extends colordecorator

public string setclothcolor()

public float getprice()

}

greenclothe:

public class greenclothe extends colordecorator

public string setclothcolor()

public float getprice()

}

裝飾者模式的**已經,現在在說說這樣做有什麼好處,先假設不

用裝飾者模式,我們一般會用什麼方式來實現,多種顏色的組合呢?

比較直接的辦法就是通過類繼承的方式實現多種顏色的組合,但是

用這種方式,每一次產生乙個特定的顏色組合時都會產生乙個類,

這樣就會導致,乙個工程裡面類的個數過於繁多,這樣會導致很多

其他的問題,比如**的可讀性下降,而且會很大程度影響程式的

效率;而裝飾者模式就解決了這個問題,通過裝飾者這個類,可以

實現任意顏色的組合,這樣就大大的減少了類的數量。

總結起來就一句話,裝飾者模式比類繼承更加靈活,效率更高。

裝飾者模式

裝飾者模式 動態地將責任附加到物件上。若要擴張功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。裝飾者與被裝飾者物件具有相同的超型別。include include using namespace std class bever...

裝飾者模式

裝飾者模式,是在不改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。裝飾者模式中的角色 1 被裝飾者抽象component,是乙個介面或抽象類,就是定義最核心的物件,也是最原始的物件,這個類是需要裝飾類的基類。2 被裝飾者具體實現co...

裝飾者模式

裝飾者模式 裝飾者模式的好處是便於擴充套件,對乙個東西不管怎麼變,只需要找到相應的元件去改變它 1.如何組裝在一起 建立主題 packetbodycreator body new packetbodycreator 建立header packethtmlheadercreator html new ...