`
jackeysui
  • 浏览: 8903 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多

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


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


 



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


 


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

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


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


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

 

  • 大小: 42 KB
  • 大小: 16.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics