裝飾者模式:動態的將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。
類圖:
barbecue類**實現:
package com.decorator;
public
abstract
class barbecue
public
abstract
double
cost();
}
fish類**實現:
package com.decorator;
public
class
fish
extends
barbecue
@override
public
double
cost()
}
chicken類**實現:
package com.decorator;
public
class
chicken
extends
barbecue
@override
public
double
cost()
}
meat類**實現:
package com.decorator;
public
class
meat
extends
barbecue
@override
public
double
cost()
}
barbecuedecorator類**實現:
package com.decorator;
public
abstract
class
barbecuedecorator
extends
barbecue
mala類**實現:
package com.decorator;
public
class
mala
extends
barbecuedecorator
@override
public string getdescription()
@override
public
double
cost()
}
ziran類**實現:
package com.decorator;
public
class
ziran
extends
barbecuedecorator
@override
public string getdescription()
@override
public
double
cost()
}
suanxiang類**實現:
package com.decorator;
public
class
suanxiang
extends
barbecuedecorator
@override
public string getdescription()
@override
public
double
cost()
}
例項barbecuetest類**實現:
package com.decorator;
public
class barbecuetest
}
結果:
烤雞,$:
20.0
孜然,麻辣,烤魚,$:
13.0
孜然,蒜香,烤肉,$:
35.0
好了,菜上齊了,終於可以大吃一頓了。 Java設計模式之裝飾者模式
設想乙個情景,假設有一家奶茶店,店裡面只賣飲料,不賣其他的東西,且飲料的品種只有兩種分別為coffee和milk,那麼為這家店的訂單系統可以簡單的設計為兩個類,coffee類和milk類。如果有一天,店裡面賣的飲料品種增加了很多種,這個時候我們可以發現飲料種類很多,但是每一類都可以抽象出類似的屬性和...
Java設計模式之裝飾者模式
裝飾者模式在保持原有結構不變的情況下,新建類 新增功能 去包裝原有的類。1.實體抽象類 public inte ce drink 2.具體例項實現 public class coffee implements drink override public string getdescription 3...
Java設計模式之裝飾者模式
裝飾者模式在我理解就是物件功能的封裝和傳遞的過程。我們去花店買花送人的時候會首先選哪種花,比如送老婆選的紅玫瑰,送媽媽的康乃馨等等,然後包裝走人 如果你想送大一點的,那你就得買其他的去搭配,比如101朵玫瑰,外加一些荷蘭百合,總之我們會買更多的花 在模式中我們認為有更多的操作 讓它能夠成為一束花,然...