裝飾者模式動態地將責任附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。這句話摘自書中,給人讀得很生硬難懂。通俗地來說,裝飾者和被裝飾者有相同的父類,裝飾者的行為組裝著被裝飾者的行為。
/**
* @author lollipop
* @since 2019/11/26
*/public abstract class beverage
public abstract double cost();
}
/**
* @author lollipop
* @since 2019/11/26
*/public abstract class condimentdecorator extends beverage
/**
* @author lollipop
* @since 2019/11/26
*/public class mocha extends condimentdecorator
/*** 描述
** @return
*/@override
public string getdescription()
@override
public double cost()
}
/**
* @author lollipop
* @since 2019/11/26
*/public class whip extends condimentdecorator
/*** 描述
** @return
*/@override
public string getdescription()
@override
public double cost()
}
/**
* @author lollipop
* @since 2019/11/26
*/public class starbuzzcoffee
}
whip,mocha,mocha,unknown beverage $1.59
裝飾者可以在所委託被裝飾者的行為之前與/或之後,加上自己的行為,以達到特定的目的。
多重巢狀,導致**複雜度高
Head First 裝飾者模式
1.舉乙個簡單的例子 一種飲料黑咖啡,不新增為原味咖啡,新增調料摩卡為摩卡咖啡,新增牛奶味牛奶咖啡,新增巧克力為巧克力咖啡。實現這個例子第乙個想法是基類黑咖啡,然後摩卡咖啡繼承自黑咖啡,牛奶咖啡 巧克力咖啡同理。這樣的實現看來還不錯,也使用了物件導向。那麼,現在又有了新的需求 1 新增兩種及以上的調...
headfirst設計模式
花了一周多一點的時間看完了headfirst的設計模式。看完之後有一種恍然大悟的感覺,仔細想想有覺得自己好像什麼也看懂。簡單說下對這本書的一點感悟吧,headfirst的書比較通俗易懂,之前看了四人幫的設計模式,看一半就有一種痛不欲生的感覺,自己水平有限,看不懂,也就沒在勉強自己了。對於模式其實簡單...
Head First 之裝飾模式筆記
裝飾模式 給乙個類新增一些額外的職責,並且在新增這些額外的職責時不會控制該類的執行邏輯,也就是說動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比繼承更為靈活。組成部分 抽象構件 原始的功能介面 具體構件 具體的原始功能類 裝飾角色 持有具體構件類的物件,以便執行原有功能 具體裝飾 具體...