当前位置: 附加器 >> 附加器介绍 >> 设计模式第九讲装饰器模式
装饰器模式:在保持相同接口的同时,动态地给一个对象添加额外的功能。相对于继承的功能扩展而言,装饰器也是一个灵活的替代方式。
例子:如下例模拟手机端请求web端数据,以字符串的形式发送请求。
图1图2图3图4如图3所示,注入不同实现(TCP,HTTP)的客户端,不会影响WebClient中的代码。因此,WebClient与被装饰的客户端(TCP实现或HTTP实现的客户端)没有耦合,方便增加被装饰对象,并且两者可以独立发展。装饰类与被装饰类都是Client的子类,这与外观模式有所不同。
使用场景:1、被装饰类需要扩展一些附加功能;2、在一些需要动态为类增加附加功能的场景。
装饰器模式是继承的一种补充,可以增加功能扩展的灵活性。如果每个子类的方法都要去调用附加功能,就需要分别修改各个子类,而如果使用装饰器类,则只需要增加一个装饰器类。再者,如果被装饰的方法需要与不同的装饰功能组合在一起,会出现类膨胀问题。最后Java中的流相关类使用了装饰器模式,如图4所示。
SecretGarden-Steps04:03来自阿登编程