类应设计的对扩展开放,对修改关闭。
类图
?
举个栗子(以书中”星巴慈咖啡”为例)
其实日常我们经常会去一些饮品店买饮料,咖啡等,有没有想过这个订单系统是如何实现的呢?...:
Sugar,Milk,Milk,coffee14.0
这样的实现方法在类少的时候看不出来优势,甚至有点麻烦,但是普通的饮料店,饮料种类动辄几十种,粗暴方法肯定是解决不了的....而使用装饰者模式,可以很轻松的处理各种附加要求.
特点
通过上面的例子,我们可以总结一下装饰者模式的特点。 (1)装饰者和被装饰者有相同的接口(或有相同的父类)。...(2)装饰者保存了一个被装饰者的引用。 (3)装饰者接受所有客户端的请求,并且这些请求最终都会返回给被装饰者(参见韦恩图)。 (4)在运行时动态地为对象添加属性,不必改变对象的结构。...这是我画的一个InputStream相关类的类图,当然没有画完整,但是已经足够用了.
在图中,InputStream是所有类的基类,相当于Component.