構建型
以漢堡加食材為例,漢堡(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 ...