設計模式之裝飾者模式

2021-08-10 19:15:14 字數 1557 閱讀 3900

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

使用裝飾者模式需要注意裝飾物件和裝飾類必須是乙個超類,裝飾物件和裝飾抽象類繼承超類繼承的是型別。

一起去咖啡廳買杯咖啡吧

超類:

public

abstract

class beverage

// **

public

abstract

double

cost();

}

裝飾主體物件(以咖啡為主體,這是一杯濃咖啡):

public

class

espresso

extends

beverage

@override

public

double

cost()

}

裝飾主體物件(這是一杯混合咖啡):

public

class

houseblend

extends

beverage

@override

public

double

cost()

}

抽象裝飾類:

public

abstract

class

condiment

extends

beverage

具體裝飾類(給咖啡加點摩卡吧):

public

class

mocha

extends

condiment

@override

public string getdescription()

@override

public

double

cost()

}

具體裝飾類(給咖啡加點奶泡吧):

public

class

whip

extends

condiment

@override

public string getdescription()

@override

public

double

cost()

}

現在我們開始點咖啡吧:

咖啡已經喝完了(~ ̄▽ ̄)~

這個例子是咖啡為主體,用各種調料裝飾咖啡,因為組合時可能是純咖啡與調料組合,也有可能是咖啡與一種或多種調料的組合再和調料進行組合,所以咖啡和調料必須是乙個超類,就是型別必須一致。

設計模式之 裝飾者模式

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

設計模式之裝飾者模式

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

設計模式之裝飾者模式

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