演示装饰器模式的用法

2023-06-11
关注

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

我们通过下面的实例来演示装饰器模式的用法。其中,我们将把一个形状装饰上不同的颜色,同时又不改变形状类。

结构图

角色与理解

  • 装饰模式共分为四种角色:
  • Component (抽象构件):具体构件与抽象装饰类的共同父类,声明具体构件中实现的业务方法,它的出现能够让客户端一致的透明的对待装饰前和装饰后的类
  • ConcreteComponent (具体构件):抽象构件的子类,实现具体的业务方法
  • Decorator (抽象装饰类):抽象构件的子类,内部维持一个抽象构件的引用,通过该引用调用具体构件的业务方法
  • ConcreteDecorator (具体装饰类):抽象装饰类的实现类,声明并实现各种装饰方法实现对具体构件的装饰
  • 具体构件和装饰具体构件的抽象装饰类通过注入的方式被抽象装饰类继续装饰
  • 因为具体构件和抽象装饰类都继承抽象构件,所以被装饰时可以被同样的对待,更加灵活

核心代码

  • 抽象组件

  • 具体构件

  • 抽象装饰类

  • 具体装饰类

  • 客户端

注意事项

  • 尽量保持装饰类与被装饰类的接口相同,确保在客户端调用时能够被一致对待
  • 被装饰类尽量是一个“轻”类,较少的职能,通过装饰类对其进行扩展
  • 如果具体构件类只有一个,那么抽象装饰类可以直接是具体构件类的子类

您觉得本篇内容如何
评分

相关产品

Honeywell 霍尼韦尔智能工业 在线/便携烟气分析仪专用传感器 气体传感器

CO 传感器;SO2传感器;NO2 传感器;NO传感器;氧气传感器

南方泰科 TGM 压力传感器

TGM是一款SOP8封装的压阻式MEMS压力传感器,其压力传感器芯片封装在 SOP8 塑封壳内。在传感器压力量程内,当用固定电压供电时,传感器产生毫伏输出电压,正比于输入压力。压力传感器芯片为绝压,可提供不同的压力量程的SOP8 压力传感器。

Huba Control 富巴 525系列 压力传感器

525系列压力传感器采用集公司20多年研发经验的陶瓷压力传感器芯片技术。该系列压力传感器可选压力范围大,电气连接形式多。最小量程为50mbar。大批量使用具有很好的性价比。

Cubic 四方光电 PM3009BP 室外粉尘传感器

PM3009BP是一款专门针对餐饮油烟监测的油烟传感器,其采用旁流采样方式,自带除水雾装置,结合智能颗粒物识别算法,确保传感器能够快速准确的检测油烟浓度的变化,同时创新的镜头自清洁技术的应用,能够长效防护传感器油烟污染,大幅度延长传感器的使用寿命。

Winsen 炜盛科技 MH-410D 红外CO2气体传感器 红外传感器

MH-410D红外气体传感器是通用型、智能型、微型传感器,该红外传感器利用非色散红外(NDIR)原理对空气中存在的CO2进行探测,具有很好的选择性,无氧气依赖性,性能稳定、寿命长。内置温度补偿。该红外传感器是通过将成熟的红外吸收气体检测技术与微型机械加工、精良电路设计紧密结合而制作出的小巧型高性能红外传感器。该红外传感器可广泛应用于暖通制冷与室内空气质量监控、工业过程及安全防护监控、农业及畜牧业生产过程监控。

Alliance 莱恩&联众传感线缆 Aurora Tool Cable 医疗电线 医疗线缆

用于连接两个5DOF传感器或一个6DOF传感器的电缆。 可重复使用 用于电磁跟踪系统

RAYCOH 锐科智能 30GM系列 IO-Link输出 2EP-IO,IUEP-IO 超声波测距传感器和接近开关

RAYCOH 锐科智能30GM系列 IO-Link输出 超声波线性位置传感器和开关

评论

您需要登录才可以回复|注册

提交评论

慧生活

这家伙很懒,什么描述也没留下

关注

点击进入下一篇

2020年自动驾驶技术还有多远?

提取码
复制提取码
点击跳转至百度网盘