专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

设计模式(九):装饰者模式

68_1.png

优点:

  ① 可以提供比继承更多的灵活性,原有代码无须变动,只是在原对象上装饰一层“外衣”。

  ② 可以动态扩展一个对象的功能,在运行时选择不同的装饰器,从而实现不同的行为。

缺点:

  ① 会产生很多的小对象,增加了系统的复杂性

  ② 比继承更加灵活,同时意味着比继承更易出错,排错也困难,对于多次装饰的对象,可能需要逐级排查。

适用范围:

  在不影响其他对象的情况下,动态、透明的为特定对象添加新功能,同时也可动态撤销新功能。

  当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时。

客户端:

  ConcreteComponent c = new ConcreteComponent(); //待装饰对象

  Decorator a = new ConcreteDecoratorA(); //装饰1
  Decorator b = new ConcreteDecoratorB(); //装饰2

  a.SetComponent(c); //装饰1加入对象c
  b.SetComponent(a); //装饰2加入对象c(已含装饰1)
  b.Operation(); //全部展示

一句话概括:在不影响其他对象的情况下,为原有对象添加“新的衣服”。

    /**
     * Component          (待装饰对象接口,含执行方法)
     * ConcreteComponent  (待装饰对象实例化)
     *
     * Decorator          (装饰抽象类,继承了Component接口,且有Component属性)
     * ConcreteDecoratorA   ConcreteDecoratorB (两个装饰实例,为Component的执行方法添加新内容)
     */

文章永久链接:https://tech.souyunku.com/20301

未经允许不得转载:搜云库技术团队 » 设计模式(九):装饰者模式

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们