設計模式(八) 裝飾者模式

2021-10-07 21:05:37 字數 1786 閱讀 2479

一、橋接模式介紹

裝飾者模式定義

1)裝飾者模式:動態的將新功能附加到物件上。在物件功能擴充套件方面,它比繼承更有彈性,裝飾者模式也體現了開閉原則(ocp);

2)這裡提到的動態的將新功能附加到物件和ocp原則。

二、應用

1.裝飾模式應用例項

星巴克咖啡訂單專案(咖啡館):

1)咖啡種類/單品咖啡:espresso(義大利濃咖啡)、shortblack、longblack(美式咖啡)、decaf(無因咖啡);

2)調料:milk、soy(豆漿)、chocolate;

3)要求在擴充套件新的咖啡種類時,具有良好的擴充套件性、改動方便、維護方便;

4)使用物件導向的方法來計算不同種類咖啡的費用:客戶可以點單品咖啡,也可以單品咖啡+調料組合。 **

1)抽象類drink

public

abstract

class

drink

public

void

setdes

(string des)

public

float

getprice()

public

void

setprice

(float price)

//計算費用的抽象方法

//子類來實現

public

abstract

float

cost()

;}

2)coffee類

public

class

coffee

extends

drink

}

3)具體coffee類

public

class

espresso

extends

coffee

}

public

class

longblack

extends

coffee

}

public

class

shortblack

extends

coffee

}

4)裝飾類

public

class

decorator

extends

drink

public

float

cost()

public string getdes()

}

5)具體裝飾類

//具體的decorator,這裡就是調味品

public

class

chocolate

extends

decorator

}

public

class

milk

extends

decorator

}

public

class

soyextends

decorator

}

6)咖啡店類(客戶端)

public

class

coffeebar

}

設計模式(八)裝飾模式

嘛是裝飾?起裝扮 錦上添花的功能。現如今,買個什麼吃的 喝的 玩的,先不說好吃不好吃,好玩不好玩,包裝就非常吸引人。各路廠家為了裝飾自己的產品是挖空了心思賺消費者的錢。今天就看看這個裝飾模式,用生活中的例子來看看這個模式是怎麼運用的?官方定義 decoratorpattern 裝飾者模式 動態地將責...

設計模式 裝飾者模式

public abstract class beverage public abstract double cost public abstract class condimentdecorator extends beverage public class darkroast extends be...

設計模式 裝飾者模式

沒什麼特別的,之前看懂了,這次自己再複述一下。畢竟把別人講懂了才是真的懂了。主要參考了head first 設計模式。例子講述的是在為星巴克咖啡的製作訂單的情況,比如客人點了飲料,那麼系統會自動算出 不知道是我沒有體會到,還是這個例子不太合適,算出 那麼簡單的事還需要用到類?不過不影響我們思考裝飾者...