裝飾者模式

2021-09-25 19:04:16 字數 1462 閱讀 7792

構建型

以漢堡加食材為例,漢堡(inte***ce)就是乙個抽象被裝飾者,普通漢堡就是被裝飾者實體,食材(abstract class,不增加功能也

可以是class)就是抽象裝飾者,具體的食材:雞蛋,牛肉就是裝飾者實體。

uml類圖

具體的裝飾類通過傳入被裝飾類並增強被裝飾類的方法,裝飾類也可以是被裝飾類。

被裝飾介面

public inte***ce humburger
被裝飾實體

public class generalhumburger implements humburger 

@override

public integer getprice()

}

裝飾介面

public abstract class condiment implements humburger

abstract string getsize();

@override

public string getname()

@override

public integer getprice()

}

裝飾實體

public class egghumburger extends condiment 

@override

public string getsize()

@override

public string getname()

@override

public integer getprice()

}

public class beefhumburger extends condiment 

@override

public string getsize()

@override

public string getname()

@override

public integer getprice()

}

應用層

public class test 

}

關鍵點jdk原始碼中io相關的類大量使用的裝飾者模式;

在這裡inputstream就是被裝飾抽象類,objectinputstream就是具體的被裝飾者,fileinputsteam就是裝飾類,它的子類就是具體的裝飾者。

裝飾者模式

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

裝飾者模式

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

裝飾者模式

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