一、橋接模式介紹
裝飾者模式定義
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 設計模式。例子講述的是在為星巴克咖啡的製作訂單的情況,比如客人點了飲料,那麼系統會自動算出 不知道是我沒有體會到,還是這個例子不太合適,算出 那麼簡單的事還需要用到類?不過不影響我們思考裝飾者...