2

GWT アプリケーションのウィジェット/パネルの次の構造があるとします -

  • さまざまなアプリケーションへのナビゲーションに使用される DockLayoutPanel の左側にあるツリー メニュー。
  • DockLayoutPanel の中央にあるパネルと、このパネルに読み込まれるさまざまなコンテンツ ウィジェット (これは、ナビゲーション ツリー メニューによって制御されます。
  • これらのコンテンツ ウィジェットは、1 つ以上のウィジェットを含むコンポジットです。

このようなアプリケーションに対処する 1 つの方法は、すべてのウィジェット / パネルに対してシングルトンを保持することです。これは、コンポジットがすべての子ウィジェットに対してシングルトンを保持することを意味します。しかし、これはシングルトンの過剰な使用だと思います。もう 1 つの方法は、Widget オブジェクトが必要になるたびに新しい Widget オブジェクトを構築することですが、これにはコストがかかります。

これに関するベストプラクティスは何ですか? この問題を処理する標準パターンはありますか?

4

1 に答える 1

4

もう1つの方法は、必要になるたびに新しいWidgetオブジェクトを作成することですが、これにはコストがかかる必要があります。

あなたは驚かれることでしょう。ウィジェットの作成は無料ではありませんが、ほとんどの場合、DevModeでもかなり安価です。DevMode(具体的にはFlexTable / Grid)で作成するのに費用がかかるウィジェットがいくつかありますが、アプリケーションをコンパイルすると、それらは大幅に高速化されます。

これに特化したパターンはないようです。また、ベストプラクティスを提供している教祖を指すこともできませんが、このアプリケーションでは、以前はすべてのトップレベルウィジェットをシングルトンとして扱っていたため、我ら。(異なる画面間の状態の管理、イベントバスイベントの処理、クリアされていない場合の画面上の古いデータ)

ほとんどのコードをリファクタリングしてオンデマンドで作成し(その後、不要になったときに破棄し)、よりシンプルなコードとより高速な起動時間を実現しました。

結局、オンデマンドでウィジェットを作成する場合、それらのウィジェットをシングルトンにすることでパフォーマンスを向上させる必要がある場合がいくつかあるかもしれませんが、その努力を正当化できるのはごくわずかであることがわかると思います。

全体として、試したことがなければ何かが遅くなると思い込まないでください。また、コードを先制的に最適化しないでください。

于 2012-07-27T13:20:34.823 に答える