装饰者(Decorator)模式
	动态地将责任附加到对象上。若要扩展功能，装饰者提供了比继承更有弹性的替代方案。（示例：星巴兹咖啡）

项目需求
	星巴兹是以扩张速度最快而闻名的咖啡连锁店。
	因为扩张速度实在太快了，他们准备更新订单系统，以合乎他们的饮料供应要求。

开放-关闭原则
	5，类应该对扩展开放，对修改关闭。
		目标：允许类容易扩展，在不修改现有代码的情况下，就可搭配新的行为。
		有什么好处呢？这样的设计具有弹性，可以接受新的功能来应对改变的需求。

具体实施
	以饮料为主体，然后在运行时以调料来“装饰”饮料。
	类图见“装饰我们的饮料”

模式特性
	装饰者和被装饰对象有相同的超类型。
	可以用一个或多个装饰者包装一个对象。
	在任何需要原始对象（被包装的）的场合，可以用装饰过的对象代替它。
	装饰者可以在所委托被装饰者的行为之前或之后，加上自己的行为，以达到特定的目的。（关键点：组合 + 委托！）
	对象可以在任何时候被装饰，所以可以在运行时动态地用你喜欢的装饰者来装饰对象。

真实世界的装饰者：Java I/O
	InputStream是抽象组件，FileInputStream是被装饰的组件；FilterInputStream是一个抽象装饰者，BufferedInputStream是具体的装饰者。

缺点
	利用装饰者模式，常常造成设计中有大量的小类，数量实在太多，可能会造成使用此API程序员的困扰。