2

ユーザー インターフェイス ウィジェットがあり、ステータスが変化したときに、いくつかのアクションを実行するように設定する必要があるとします。だからあなたは次のようなことをします:

widget.setSize(400, 300);
widget.setHeader("whatever");
widget.setData(new int[] {2, 3, 5});
widget.setFancyThingEnabled(true);

次に、これらの操作のそれぞれがウィジェット全体の更新をトリガーするとします。それは非効率的です。

これを修正する方法はいくつか知っていますが、それを行うための正しい/最良の/最もエレガントなパターンは何ですか? 私はできることを知っています:

  • オブジェクトを作成して、入力Propertyしてウィジェットに渡すことができます。
  • setRefresh(enabled:boolean)トランザクションをラップする方法があります。
  • トランザクション内で実行されるコールバック メソッドを介してのみプロパティ設定を許可します。
  • 更新をキューに入れ、しばらく待ってから続行してください。

私は GWT を使用していますが、これは任意の速度の遅いマシンのブラウザーで実行されますが、これはほとんどすべての環境に当てはまります。

編集: UIは一例であることに注意してください。状態から別の状態への遷移が、他の中間状態で不要な計算をトリガーしすぎる一般的なシナリオについて言及しています。

4

2 に答える 2

2

この戦略パターンはどうですか:

widget
  .startAction() // instance of WidgetAction returned
  .setSize(400, 300)
  .setHeader("whatever")
  .setData(new int[] {2, 3, 5})
  .setFancyThingEnabled(true)
  .close(); // actual changes made for UI
于 2012-09-17T09:05:00.910 に答える
0

ブラウザがすでにこれを行っているため、不要です。これが可能なのは、現在の JavaScript イベント ハンドラー全体が終了するまでレンダリングを行う必要がないためです。これは実際、一部のデスクトップ GUI フレームワークと比較して、Web 開発の大きな利点です。

于 2012-09-17T09:37:45.767 に答える