设计模式 装饰模式

装饰模式(Decorator Pattern): 动态的给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活。其别名为包装器(Wrapper),与适配器的别名相同,但他们适用于不同的场合。装饰模式是一种对象结构型模式。

模式结构:

  Component: 抽象构件

  ConcreteComponent: 具体构件

  Decorator: 抽象装饰类

  ConcreteDecorator: 具体装饰类

模式动机:

  装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任,换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不需要创建更多的子类的情况下,将对象的功能加以扩展

具体实现类图:

                

类图解析:

  具体构建Car和抽象装饰类Changer实现了抽象构件Transform接口,Changer拥有抽象构件Transform这个属性(因此可以调用Car的对象) ,Robot、AirPlane继承自Changer。

装饰器模式使用环境

  • 在不影响其他对象的情况下,以动态的、透明地方式给单个对象添加职责。
  • 动态地给一个对象添加功能,这些功能可以被动态地撤销
原文地址:https://www.cnblogs.com/wfswf/p/15620375.html