定义:
动态的给一个对象添加额外职责,Decorator提供了为子类扩展的功能。
UML:
用途:
- Decorator非常适合图形程序,也同样适合音频和视频。
- 在c#中I/O API 都是利用Decorator模式实现。
System.IO.Stream
System.IO.BufferedStream
System.IO.FileStream
System.IO.MemoryStream
System.Net.Sockets.NetworkStream
System.Security.Cryptography.CryptoStream
- 在.NET3.0中已有实际的装饰器类了。System.Windows.Controls命名空间中提供了一些基类,也用于给其他的图形
元素添加特殊效果,如Border和Viewbox
代码:
对于Decorator模式有一点很重要:它基于新对象被创建出来时具有自己的操作,有些操作可以被继承,但只能继承一层。