《Head First设计模式》之装饰者模式

《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式

但是因为饮料可以认为是由咖啡和调料组成的,多种咖啡和多种调料就能组合成无数多种的饮料。那么上述的方式实现饮料就会出现如下的情况。饮料种类过多,“类爆炸”!

《Head First设计模式》之装饰者模式

接下来看一段短对话;

《Head First设计模式》之装饰者模式

这里涉及到了一个涉及原则;

《Head First设计模式》之装饰者模式


===========接下来就到了本文的主题【装饰者模式】=============

《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式

《Head First设计模式》之装饰者模式

《Head First设计模式》之装饰者模式

《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式


那之前的星巴克咖啡我们也可以用这样的装饰者模式去进行实现了。看一下如下的设计图:

《Head First设计模式》之装饰者模式

然后将设计使用具体代码来实现;

《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式

《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式


然后,就是实现具体的装饰者了,其实就是饮料中的调料。先从摩卡(Mocha)下手吧。

《Head First设计模式》之装饰者模式



现在可以测试测试下订单,喝杯咖啡了!!!

《Head First设计模式》之装饰者模式

《Head First设计模式》之装饰者模式


这样就可以很好的使用装饰者设计模式来实现卖咖啡的功能了。


《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式

《Head First设计模式》之装饰者模式


我们可以尝试下编写自己的java I/O类

《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式


《Head First设计模式》之装饰者模式

《Head First设计模式》之装饰者模式