设计模式:装饰模式

发布时间:2021-10-01 22:59:04 阅读:(175)

    装饰模式

    什么是装饰模式

    动态地给一个对象增加一些额外的职责,就拓展对象功能来说,装饰模式比生成子类的方式更为灵活

    设计思想

    程序中,我们希望动态地给一个类增加额外的功能,而不改动原有的代码,就可用装饰模式进行扩展

    设计要点

    • 可灵活地给一个对象增加职责或拓展功能
    • 可增加任意多个装饰
    • 装饰地顺序不同,可能产生不同的效果

    优缺点

    优点:

    • 使用装饰模式来实现扩展比使用继承更加灵活,可以在不创造更多子类地情况下,将对象的功能加以扩展
    • 可以动态地给一个对象附加更多功能
    • 可以用不同的装饰器进行多重装饰,装饰地顺序不同,可能产生不同地效果
    • 装饰类和被装饰类可以独立发展,不回互相耦合;装饰模式相当于继承地一个替代模式

    缺点:
    与继承相比,用装饰地方式拓展功能容易出错,排错也更困难。对于多次装饰地对象,调试寻找错误时可能需要逐级排查,较为烦琐

    应用场景

    • 有大量地独立地扩展,为支持每一种组合将产生大量地子类,使得子类数目呈爆炸性增长时
    • 需要动态地增加或撤销功能时
    • 不能采用生成子类地方法进行扩充时,类的定义不能用于生成子类