我有一个鼠标事件类。我正在使用 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
});
但这看起来不像是好的代码
wrt 赏金,我想要专家建议如何最好地解决程序-用户交互。如果程序提供了一个关键功能,例如在画布上画一个圆圈,那么用户如何最好地与之交互。如果用户想在圆圈后面画一个三角形怎么办?圆圈前面有一个正方形?然后程序必须提供 pre 和 post 方法,如下所示:
beforeDraw();
draw();
afterDraw();
这算不算好的设计?我应该把函数指针放在一个数组中并按顺序调用它们吗?