32131331

"单一职责"模式

重构前

«interface» Stream FileStream NetworkStream MemoryStream CryptoFileStream BufferedFileStream CryptoBufferedFileStream CryptoNetworkStream BufferedNetworkStream CryptoBufferedNetworkStream CryptoMemoryStream BufferedMemoryStream CryptoBufferedMemoryStream

存在的问题

  • 多子类衍生

重构后

«interface» Stream read() seek() write() FileStream NetworkStream MemoryStream Decorator CrypoStream BufferedStream

分析与总结

  • 通过采用组合而非继承的手法,Decorator模式实现了运行时动态扩展对象功能的能力,而且可以根据需要扩展多个功能。避免了使用继承带来的”灵活性差“和"多子类衍生问题"。
  • Decorator类在接口上表现为is-a component的继承关系,但在实现上又表现为has-a Component的组合关系。
  • Decorator模式的目的并非解决“多子类衍生的多继承”问题,Decorator模式应用的要点在在于解决“主体类在多个方向上的扩展功能” ----是为“装饰”的含义。
上一篇:C# FileStream设置了FileAccess.ReadWrite, FileShare.ReadWrite依然报“流不可读”或者“流不可写”


下一篇:反序列化