装饰(Decorator)模式(包装模式)

概念:动态为对象添加功能。是一种替换继承关系的方案。无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。装饰设计模式在设计模式定位:结构型模式,把类或对象结合在一起形成更大的结构。干什么:动态给对象添加新的功能。作用:避免因为继承关系,某个类个数快速增长,同时也避免了继承关系中类与类之间耦合度高。详细解析见下文。   ...
摘要由CSDN通过智能技术生成

概念:动态为对象添加功能。

是一种替换继承关系的方案。无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。

装饰设计模式在设计模式定位:结构型模式,把类或对象结合在一起形成更大的结构。

干什么动态给对象添加新的功能。

作用:避免因为继承关系,某个类个数快速增长,同时也避免了继承关系中类与类之间耦合度高。详细解析见下文。

                        

装饰模式核心知识点

抽象组件角色:一个抽象接口。装饰对象和被装饰对象【具体组件对象】共有的父类接口。这样客户端对象就能以相同的方式操作具体组件对象和装饰对象【或者说可以将装饰类作为组件类看待】

具体组件角色:抽象组件的基本实现类。装饰模式是为这个基类动态添加新功能。

抽象装饰角色:装饰对象包含一个真实组件对像的引用。它的作用是接受需要扩展功能的具体组件类;实现抽象组件接口,使得在动态添加功能时具体装饰类和具体组件类用法相同,使模式更加灵活。

具体装饰角色:为抽象装饰角色的实现类。负责为接受的具体组件类添加新的功能或优化功能。

              

实现:虚线、三角箭头 ;     依赖:虚线、箭头 ;    聚合:实线、菱形

ICar :抽象组件角色

RunICar:具体组件角色(被装饰类)。实现抽象组件角色。它具有组件类的基本功能,装饰类的存在是为了扩展它的功能。

ICarDecorator:抽象装饰角色。实现抽象组件角色【使具体装饰角色也可以作为具体组件添加新的功能或优化功能】࿰

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值