装饰器通过“包裹”原始值为对象添加附加功能。
是否有一个对象或函数的名称,用于摄取预构造的对象并通过变异为其添加其他功能?。
示例:
function mutatesObjects(target) {
target.additionalFunctionality = "I've been mutated!";
}
这类似于控制者或工厂,只是它向已经创建的对象添加功能。
这个模式有名称吗?
答案 0 :(得分:2)
根据此更改的目的,Monkey Patching可能适用。
“猴子补丁是程序在本地扩展或修改支持系统软件的一种方式(仅影响程序的运行实例)。”
答案 1 :(得分:1)
我建议将Plugin
名称作为对jquery插件的引用。
但我也认为在大多数情况下这实际上是一种反模式。这不仅打破了封装(OOP中的主要概念之一),甚至超越了它并改变了对象功能。
想象一个简单的例子,你可以这样做:
doSomething(object)
在最好的情况下,您可以希望object
状态没有改变。在更糟糕的情况下,你可以怀疑它已经发生变异并且状态发生了变化。
如果你得到与新方法或属性完全不同的东西,那真是出乎意料。
但当然,可以有很好的用法(比如jquery插件)。