Mixin против плагина.Что выбрать? - PullRequest
16 голосов
/ 04 сентября 2011

Давайте предположим, что я определил несколько новых компонентов - MyComponent1, MyComponent2, ..., которые расширяют Ext.Component.

Теперь я хочу расширить все эти виджеты с той же функциональностью - яхочу добавить кнопку close, которая появится в правом верхнем углу MyComponentX.el.

Что я должен использовать: mixin?plugin?или что-то еще?
И вообще: mixin vs plugin, что такое лучшая практика?

Ответы [ 3 ]

18 голосов
/ 04 сентября 2011

Мне нравится думать об этом, как -

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

14 голосов
/ 18 ноября 2011

Свойства и функции Mixin вставляются в класс напрямую, поэтому они являются частью определения класса.

плагины добавляются на уровне экземпляра

1 голос
/ 01 декабря 2015

Плагины добавят функциональность в класс Ext.Component или класс, расширяющий Ext.Component. Сфера действия любого метода в плагине находится в самом плагине.

Mixins может использоваться для добавления функциональности в любой другой класс. Методы mixins будут доступны непосредственно в классе.

...