设计模式-装饰模式-Decorator

? 装饰模式-Decorator

源码地址: https://github.com/mumushuiding/golang-design-pattern/tree/master/03_Decorator

❓ 问题

? 装饰模式应该可以在运行时 动态 地给一个已有的对象 添加 功能 (类似装饰圣诞树)

✔️ 解决方法

    1. ?通过装饰类 聚集 需要装饰和扩展的对象.
    1. ?同时提供给顾客或客户与 装饰 相同的接口.

⚡️类图

?参与者

装饰模式的参与者:

  • ? IAuto (组件接口).IAuto 基类,基类的对象希望扩展自己的功能,但是自身不做任何修改.
  • ? Decorator (装饰类). 装饰 类是基类IAuto的派生类, 类 Decorator 聚集 了类 IAuto 接口,通过这个对象可以调用 IAuto 类的子类.装饰类 覆写 所有继承的方法,把调用委托给聚集的对象.
  • ? Car1/汽车1 (具体实现组件1).是类 IAuto 的子类.
  • ❄️ AirConditioner/空调 (具体实现装饰类1).是Decorator的实现

?评价

?优点

装饰模式具有下列优点:

  • 组件并不识别装饰类
  • ➕ 可以动态地 扩展 功能
  • ? 装饰模式可以把一个 继承 的层次关系结构中的多个类同时通过一个装饰类进行扩展.
  • ? 装饰类可以自由 组合.

?缺点

装饰模式存在下列缺点:

  • ? 装饰类的主要部分是代理方法,但是代理可导致 延时.
  • ❌ 很难找到装饰类的组合应用中发生的 错误.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值