装饰者模式 (Decorator Pattern)-结构型模式第一篇

This is post 7 of 10 in the series “Design Patterns” 《设计模式》系列序——写给未来的自己 工厂方法模式(Factory Method)-创建型模式第一篇 抽象工厂模式(Abstract Factory Pattern)-创建型模式第二篇 单例模式(Singleton Pattern)-创建型模式第三篇 建造者模式(Builder Pattern)-创建型模式第四篇 原型模式(Prototype Pattern)-创建型模式第五篇 装饰者模式 (Decorator Pattern)-结构型模式第一篇 组合模式 (Composite Pattern)-结构型模式第二篇 适配器模式 (Adapter Pattern)-结构型模式第三篇 代理模式 (Proxy Pattern)-结构型模式第四篇 本篇是结构型模式(Structural patterns)的第一篇,之所以选择Decorator模式第一个出场,是由于抓揪随机的结果。Decorator模式能够为行为带来灵活的组合,减少子类的数量,希望文章能够给大家带来一点帮助。 定义: Decorator模式,能够将行为动态地添加到一个类型实例,而不会影响其它的实例。 解决的问题: 如何在运行时给一个对象添加新的行为 如何减少子类的数量 我们知道通过新建一个子类,也能够为类型添加新的行为,但是它存在一个明显的缺陷:随着新行为数目的不断增加,需要增加更多数目的子类,并且行为之间无法组合使用 怎么去解决: 通过定义一个接口代表原始对象本身,如IComponent 通过定义一个接口IDecorator,它继承自IComponent,同时通过组合的方式它拥有IComponent 对于IDecorator的任何请求,都会被重定向到IComponent,并且在重定向前后我们有能力添加新的行为 UML: