定義:動態地將責任附加到物件上。想要擴充套件功能,裝飾者提供有別於繼承的另一種選擇。
**:
介面(面對介面程式設計,以便動態繫結)
public inte***ce women
原始類
/**
* 定義原始物件
* @author z_hh
* @time 2023年7月22日
*/public class fengjie implements women
@override
public void qualities()
}
裝飾者抽象類(作用:1、抽取共同的屬性,在這裡是women引用;2、提供預設修飾,避免所有子裝飾類必須實現介面,例如,這裡的畫眉毛裝飾器,我只需要裝飾顏值方法,只重寫facescore方法就可以了)
/**
* 裝飾抽象類
* 作用:
* 1、抽取共同屬性
* 2、提供預設修飾,避免每個子裝飾類必須重寫所有介面方法
* @author z_hh
* @time 2023年7月22日
*/public abstract class makeupwomen implements women
@override
public void facescore()
@override
public void qualities()
}
裝飾者1(畫眉毛,只重寫facescore方法)
/**
* 畫了眉毛
* @author z_hh
* @time 2023年7月22日
*/public class penciltheeyebrowswomen extends makeupwomen
// 只裝飾顏值方法
@override
public void facescore()
}
裝飾者2(塗唇膏,只重寫qualities方法)
/**
* 塗了唇膏
* @author z_hh
* @time 2023年7月22日
*/public class lipstickwomen extends makeupwomen
// 只裝飾氣質方法
@override
public void qualities()
}
測試:
public class test
}
結果:
※※※原始的鳳姐
鳳姐原來的顏值是0分!
鳳姐原來的氣質是0分!
--------------完美分割線--------------
※※※畫了眉毛的鳳姐
鳳姐原來的顏值是0分!
因為畫了眉毛,顏值提高50分!
鳳姐原來的氣質是0分!
--------------完美分割線--------------
※※※塗了唇膏的鳳姐
鳳姐原來的顏值是0分!
鳳姐原來的氣質是0分!
因為塗了唇膏,氣質提高50分!
注意:jdk中典型的裝飾者設計模式------>io流。 裝飾者模式
裝飾者模式 動態地將責任附加到物件上。若要擴張功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。裝飾者與被裝飾者物件具有相同的超型別。include include using namespace std class bever...
裝飾者模式
裝飾者模式,是在不改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。裝飾者模式中的角色 1 被裝飾者抽象component,是乙個介面或抽象類,就是定義最核心的物件,也是最原始的物件,這個類是需要裝飾類的基類。2 被裝飾者具體實現co...
裝飾者模式
裝飾者模式 裝飾者模式的好處是便於擴充套件,對乙個東西不管怎麼變,只需要找到相應的元件去改變它 1.如何組裝在一起 建立主題 packetbodycreator body new packetbodycreator 建立header packethtmlheadercreator html new ...