設計模式 裝飾器模式

2022-03-02 18:03:52 字數 1803 閱讀 6212

裝飾器模式可以動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。

裝飾器和被裝飾的物件有兩個特點:

1)他們實現同乙個介面

2)裝飾器中使用了被裝飾的物件

1.假設老王來到商店裡進行購物,老王可以這樣做:

public

class

laowang

}

每買一樣東西,老王都得對show方法進行修改,違背了我們開發的開閉原則,所以老王可以使用裝飾器模式動態的將需要做的事情新增到物件上。

2.構建裝飾器超類,為裝飾器提供被裝飾的物件

/**

* 裝飾器超類,和被裝飾的物件實現同乙個介面 person

* 作用就是為裝飾器類提供被裝飾的物件

* @author

yuans

* @create 2018-10-30-21:02 */

public

class clothesdecorator implements

person

@override

public

double cost()

@override

public

void

show()

}

3.老王穿上jacket

/**

* 具體的裝飾,夾克

* * @author yuans

* @create 2018-10-30-21:04

*/public class jacket extendsclothesdecorator

@override

public voidshow()

@override

publicdouble cost()

}

4.老王穿上帽子

/**

* 具體的裝飾,帽子

* *

@author

yuans

* @create 2018-10-30-21:06 */

public

class hat extends

clothesdecorator

@override

public

void

show()

@override

public

double cost()

}

5.測試類

/**

* 裝飾器模式測試類

* 1.裝飾器和被裝飾類要實現同乙個介面(實際開發中也可能用繼承)

* 2.裝飾器中使用了被裝飾的物件。

* @author

yuans

* @create 2018-10-30-21:09 */

public

class

decoratemain

}

6.測試結果及總結

裝飾器模式的作用是動態給物件增加一些功能,而不需要修改物件本身;擴充套件功能的方式比較靈活;每乙個裝飾器相互獨立,需要修改時不會互相影響。

設計模式 裝飾器模式

裝飾器模式 decorator pattern 允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。public inte ce playe...

設計模式 裝飾器模式

裝飾者模式的應用場景 裝飾者模式 decorator pattern 是指在不改變原有物件的基礎之上,將功能附加到物件上,提供了比繼承更有彈性的替代方案 擴充套件原有物件的功能 屬於結構型模式。裝飾者模式在我們生活中應用也比較多如給煎餅加雞蛋 給蛋糕加上一些水果 給房子裝修等,為物件擴充套件一些額外...

設計模式 裝飾器模式

定義 裝飾模式可以動態的給乙個物件增加一些額外的功能 增強功能 相比於繼承,裝飾模式能對不支援繼承的類進行增強 並且比繼承更靈活,不需要生成大量的子類。角色 實現 public abstract class house public abstract void sleep public class ...