裝飾者模式

2021-08-21 16:01:51 字數 1740 閱讀 6309

定義:動態地將責任附加到物件上。想要擴充套件功能,裝飾者提供有別於繼承的另一種選擇。

**:

介面(面對介面程式設計,以便動態繫結)

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 ...