美文网首页
结构型设计模式.装饰器模式

结构型设计模式.装饰器模式

作者: 双鱼子曰1987 | 来源:发表于2017-10-27 10:20 被阅读0次

    <装饰模式是继承的一个替代模式>

    概念理解

    • 定义:在不改变原有类的结构基础上,动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。

      Decorator.png

    Component:原始组件的抽象类或者接口
    ConcreteComponent:原始的组件对象,通常是被装饰器装饰的原始对象;
    Decorator:装饰器的抽象类或者接口。为了实现装饰器功能的复用,需要继承组件接口类Component;并持有一个Component对象。(如果不继承组件接口类Component,则只能为某个组件添加单一的功能,即装饰器对象不能在装饰其他的装饰器对象。)
    ConcreteDecorator:具体的装饰器类,实现向被装饰对象添加的不同的功能。

    应用和优缺点

    • 解决问题:
      避免子类膨胀:扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。

    • 应用实例:
      1、装饰模式为已有类动态附加额外的功能就像LOL、王者荣耀等类Dota游戏中,英雄升级一样。每次英雄升级都会附加一个额外技能点学习技能。具体的英雄就是ConcreteComponent,技能栏就是装饰器Decorator,每个技能就是ConcreteDecorator;

    • 应用场景:
      1、扩展一个类的功能。
      2、动态增加功能,动态撤销。

    • 优点:
      1、装饰者模式可以提供比继承更多的灵活性
      2、装饰类和被装饰类可以独立发展,不会相互耦合
      3、替代继承的强耦合关系,模块解耦

    • 缺点:
      1、会产生很多的小对象,增加了系统的复杂性
      2、多层装饰复杂度增加,意味着更加易于出错,排错也很困难,调试时寻找错误可能需要逐级排查,较为烦琐。

    参考:
    装饰器模式(Decorator)

    相关文章

      网友评论

          本文标题:结构型设计模式.装饰器模式

          本文链接:https://www.haomeiwen.com/subject/clhrpxtx.html