《JAVA与模式》读后感4-装饰模式

装饰模式
定义:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。


装饰模式的构件包括抽象构件、具体构件、抽象装饰、具体装饰。对于透明的装饰模式,客户端面向抽象构件编程,所以是透明的(对所有的装饰视而不见)。对半透明的装饰模式,客户端面向具体装饰编程,因为要使用具体装饰的特殊方法(不在抽象构件和抽象装饰里面),无法实现完全透明。


 



装饰模式的原理是逐层包裹并加入新功能。把地球结构想象成装饰模式,内核就是具体构件,外核、地幔等就是具体装饰。


 


装饰模式的应用场景:
(1)需要扩展类的功能或增加附加责任。
(2)需要动态给对象增加功能,这些功能也可以动态撤销。
(3)需要通过基本功能的排列组合产生大量功能。继承体系无法实现这一点,因为继承关系是静态的,无法动态组合,这一点正是装饰模式的优点。 

 
装饰模式与适配器模式的区别:
适配器模式是改变接口不改变功能。装饰模式是不改变接口(因为对客户端透明),而改变功能(因为逐层加入功能)。


装饰模式与策略模式的区别:
装饰模式虽然逐层加入新功能,但是内心的功能不会改变。策略模式会把内心的功能(具体算法)整个替换。


装饰模式与合成模式的关系:
装饰模式经常用在合成模式的行为扩展上。因为使用继承对于合成模式来说不是好办法,而装饰模式是继承模式的替代方案。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值