У меня есть класс для событий мыши.Я использую dojo b / c. Мне нравится подход OO
dojo.declare("MouseObject", null, {
constructor: function(){},
onclick : function(){...},
_onClick : function(){...}
});
_onClick()
, который прослушивает события нажатия / отпускания мыши, генерируемые окном, и определяет, произошел ли щелчок.Если это так, вызывается onClick()
.onClick()
выполняет функции, общие для всех возможных кликов, поэтому его необходимо вызывать каждый раз, когда пользователь щелкает.
иногда пользователь может захотеть расширить функциональность onClick()
Есть ли возможность включить оригиналфункциональность без копирования его вставки?Два способа, о которых я могу думать, ни один из которых мне не нравится, это
dojo.declare("MouseObjectChild", [MouseObject], {
constructor: function(){},
onclick : function(){this.inherited(arguments);...}
});
, у которого есть недостаток, заключающийся в том, что я вынужден продолжать создавать новые классы, в которых я действительно не нуждаюсь, и два - добавление промежуточной функции
dojo.declare("MouseObject", null, {
constructor: function(){},
onclick : function(){this._onClick()...}, //child onClick
_onClick : function(){...}, //parent onClick
__onClick : function(){...} //listener
});
но это не похоже на хороший код
в отношении награды, я хочу получить совет специалиста о том, как лучше всего взаимодействовать с программой.Если программа предоставляет важную функцию, такую как нарисовать круг на холсте, то как пользователь лучше всего с этим взаимодействует.Что если пользователь хочет нарисовать треугольник за кругом?Квадрат перед кругом?Тогда программа должна будет обеспечить методы до и после, например, так:
beforeDraw();
draw();
afterDraw();
Считается ли это хорошим дизайном?Стоит ли вместо этого указывать указатели на функции в массиве и вызывать их по порядку?