装饰者模式
定义:装饰者(decorator)模式能够在不改变对象自身的基础上,在程序运行期间给对象动态的添加职责。
装饰者用于通过重载方法的形式添加新功能,该模式可以在被装饰者前面或者后面加上自己的行为以达到特定的目的。
与继承相比,装饰者是一种更轻便灵活的做法。
普通对象被装饰者包裹起来,就形成了装饰者模式。
举例:
雷霆战机(吃道具的例子)
雷霆战机(吃道具的例子)
介绍:现在我们假设正在开发一个小游戏–雷霆战机,
最开始我们使用最渣的飞机,只能发射普通子弹;
吃一颗星,可以发射普通子弹和发射散弹 ;
再吃一颗,可以发射普通子弹和散弹和跟踪导弹。
// 一级飞机
// 二级飞机
// 三级飞机
PS:这样给对象动态的增加职责的方式就没有改变对象自身,一个对象放入另一个对象就形成了一条装饰链(一个聚合对象), 而上面的shot和track也就是装饰者、装饰函数 ,当函数执行时,会把请求转给链中的下一个对象。
在 FUNCTION 原型上封装通用的装饰函数
// 在原函数之前执行
// 在原函数之后执行
封装成单独函数(不污染原型)
// 在原函数之前执行
// 在原函数之后执行
PS:代码来源于–腾讯.曾探《JavaScript设计模式与开发实践》,但能很好的说明装饰者模式在js实际项目中的应用。
上面封装的函数可以直接在项目中使用。