マウスイベントのクラスがあります。Dojo b/c を使用しています。その OO アプローチが気に入っています。
dojo.declare("MouseObject", null, {
constructor: function(){},
onclick : function(){...},
_onClick : function(){...}
});
_onClick()
ウィンドウで生成されたマウスのプレス/リリース イベントをリッスンし、クリックが発生したかどうかを判断します。ある場合onClick()
は呼び出されます。onClick()
可能なすべてのクリックに共通の機能を実行するため、ユーザーがクリックするたびに呼び出す必要があります。
場合によっては、ユーザーがの機能を拡張したい場合がonClick()
あります。元の機能をコピーペーストせずに組み込む方法はありますか? 私が考えることができる2つの方法は、どちらも好きではありません
dojo.declare("MouseObjectChild", [MouseObject], {
constructor: function(){},
onclick : function(){this.inherited(arguments);...}
});
これには、実際には必要のない新しいクラスを作成し続けなければならないという欠点があり、2 つの中間関数を追加する必要があります。
dojo.declare("MouseObject", null, {
constructor: function(){},
onclick : function(){this._onClick()...}, //child onClick
_onClick : function(){...}, //parent onClick
__onClick : function(){...} //listener
});
しかし、これは良いコードのようには見えません
報奨金に関しては、プログラムとユーザーの相互作用に対処する最善の方法について専門家のアドバイスが必要です。プログラムがキャンバスに円を描くなどの重要な機能を提供する場合、ユーザーはそれをどのように操作するのが最善でしょうか。ユーザーが円の後ろに三角形を描きたい場合はどうすればよいでしょうか? 丸の前に四角?次に、プログラムは次のような pre および post メソッドを提供する必要があります。
beforeDraw();
draw();
afterDraw();
これは良い設計と見なされますか? 代わりに、関数ポインタを配列に入れて順番に呼び出す必要がありますか?