码迷,mamicode.com
首页 > 其他好文 > 详细

装饰者模式

时间:2015-09-01 01:52:18      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

模块模式:

  • 富有弹性的继承的替代方案, 通过重载方法的形式向基本对象装饰属性或者方法;

  • 不严重依赖创建对象的方式,只关注扩展额外功能(但这些额外的功能并不是必要的,不然就被合并到基本对象中了)。

和子类化的区别:

  • 通过重载方法的形式向基本对象装饰属性或者方法;

  • 而子类中添加行为会影响原有类所有实例,装饰者模式不会;

  • 比较精简。

优点:

  1. 相当灵活,重用性高;

  2. 对象可以被新行为包装,然后继续被使用,不会修改基本对象

  3. 实现继承的替代方案,给不同对象添加各自的新行为。

缺点:

  1. 管理不当会极大地复杂化应用程序架构;

  2. 碰到不知道这种模式的开发人员可能难以理解为什么使用这么多对象。

相关模式:

  • 该模式经常和组合模式 一起使用,它们通常有一个公共的父类(也就是原型),因此装饰必须支持具有add、remove、getChild操作的 component接口。

  • 参考:https://github.com/tcorral/Design-Patterns-in-Javascript/blob/master/Composite/index.html

代码例子:

  • 示例1:

    技术分享

  • 示例2:

    技术分享

    技术分享

一句话总结:

  • 黑色头发染成棕色(新生出来的头发还是黑色的,没有改变原来对象)




装饰者模式

标签:

原文地址:http://my.oschina.net/Karon/blog/499862

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!