2016-02-01 2 views
0

Декоратор добавляет дополнительные функции к объекту путем «обертывания» вокруг исходного значения.Функция, которая действует как декоратор, но использует мутацию вместо обертывания?

Есть ли имя для объекта или функции, которое поглощает предварительно сконструированный объект и добавляет к нему дополнительные функции с помощью мутации?.

Пример:

function mutatesObjects(target) { 
    target.additionalFunctionality = "I've been mutated!"; 
} 

Это похоже на contrcutor или фабрике за исключением того, что она добавления функциональности к объекту, который уже был создан.

Есть ли название для этого рисунка?

+3

Mixin - прекрасное название. – raina77ow

+0

Также государственный шаблон будет соответствовать, он в основном зависит от ваших требований. – skypjack

ответ

2

В зависимости от цели этого изменения может применяться Monkey Patching.

«Патч обезьяны - это способ распространения или модификации программного обеспечения поддержки системы на локальном уровне (затрагивающий только исполняемый экземпляр программы)».

1

Я бы предложил Plugin имя в качестве ссылки на плагины jquery.

Но я также думаю, что это в большинстве случаев анти-шаблон. Это не только разрушает инкапсуляцию (одно из основных понятий в ООП), но и выходит за ее пределы и изменяет функциональность объекта.

Представьте себе простой случай, когда вы делаете что-то вроде:

doSomething(object) 

В лучшем случае вы можете надеяться, что object состояние не изменилось. В худшем случае вы можете подозревать, что он был мутирован, и это состояние изменилось.

Это действительно неожиданно, если вы получаете что-то совершенно новое с новыми методами или свойствами.

Но, конечно, могут быть хорошие обычаи (например, плагины jquery).

Смежные вопросы