設計模式之裝飾者模式

2021-10-03 18:59:36 字數 2099 閱讀 3171

學習設計模式的日常demo

裝飾者模式介紹

裝飾者模式原理

裝飾模式就是給乙個物件增加一些新的功能,而且是動態的,要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項

裝飾者模式案例

**實現:

被裝飾物

// 定義抽象的飲品類

public

abstract

class

drink

public

void

setdes

(string des)

public

float

getprice()

public

void

setprice

(float price)

// 計算費用的抽象方法

// 子類來實現

public

abstract

float

cost()

;}// 定義繼承了抽象飲品類的主類咖啡類

public

class

coffee

extends

drink

}// 定義三種繼承了主類咖啡類的具體咖啡

public

class

acoffee

extends

coffee

}public

class

bcoffee

extends

coffee

}public

class

dcoffee

extends

coffee

}

裝飾者

// 定義主類裝飾類,繼承了抽象飲品類,並將其聚合在類中

public

class

decorator

extends

drink

@override

public

float

cost()

@override

public string getdes()

}// 定義繼承了主類裝飾類的兩種裝飾品

// 具體的裝飾物

public

class

chocolate

extends

decorator

}public

class

milk

extends

decorator

}// 測試類

裝飾者模式在jdk中的應用

裝飾者模式注意事項和細節說明

優點:動態地為物件增加新的功能或者撤銷功能(繼承就不能做到這一點)

缺點:會產生過多的相似的物件,不容易排錯!

github:設計模式源**

設計模式之 裝飾者模式

一 裝飾者模式 裝飾者模式又稱為包裝模式。動態地給乙個物件增加新的職責。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者模式顧名思義就是對乙個物件進行裝飾,具體怎樣裝飾呢?那就是給這個物件不斷的增加職責方法。給乙個物件增加方法不簡單啊,用繼承或者直接在物件的類中增加方法。如果我們要對自...

設計模式之裝飾者模式

此模式動態將職責附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更具彈性的代替方案,以一圖一概括。要點1 裝飾者和被裝飾物件有相同的超型別。2 可以用乙個或多個裝飾者包裝乙個物件。3 裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。4 物件可以在任何時候被裝飾,所以可...

設計模式之裝飾者模式

public abstract class beverage 返回當前飲品的 public abstract double cost 為了讓condiment decorator 調料裝飾者 能夠取代beverage,所以將它擴充套件至beverage類 public abstract class ...