3

私は GIN について漠然とした理解を持っていますが、プレゼンターの挿入などで機能しています。

現在ログインしているユーザーを取得するために、すべてのプレゼンターに自作の「ユーザー」クラスを挿入しようとしています。

User クラスのコンストラクターに @Inject を追加し、GIN モジュールに User を追加しましたが、それ以外は完全に迷っています。それを自分のアプリ プレゼンターにバインドしますか (試してみましたが、ユーザーが AppPresenter を拡張しないため、エラーが発生します)。シングルトンとして?これは、このデータを渡す正しい方法ですか?

私はこれをここに投稿するのは嫌いですが (無料の宿題を探しているわけではありません)、これに関するまともなチュートリアル/例を他のどこにも見つけることができません。

よろしくお願いします。

4

1 に答える 1

2

2つの可能性があります。

  • @Providesメソッドまたはプロバイダーであるソースを注入します。ただし、グローバル状態はno-noであるため、問題は、現在ログインしているユーザーをこれらのメソッドに渡す方法です。考えられる解決策は、イベントバスを介して渡すことですが、現時点では、DIの全体的なポイントをやや打ち負かしているようです(現在ログインしているユーザーの注入は、DIの役割ではなくIMHOです)。
  • イベントバスを介してユーザーを回覧します。ユーザーがログイン/変更したときに発生するカスタムイベントを作成し、一部のプレゼンターはそのイベントをリッスンします(結局のところ、すべてのプレゼンターが現在のユーザーを知っている必要はありません)。

私は2番目のアプローチを好み、使用します-DIは素晴らしいですが、あなたが説明した方法でそれを使用することは、私にはちょっとハックなようです。Guiceのドキュメントを確認することを強くお勧めします-Ginは基本的にGWTで動作するようにGuiceでラップされているため、コアは同じです。DIを効果的に使用し、一般にテスト可能なコードを作成する方法に関するその他の指針については、Misko Heveryのブログと彼が掲載したテスト可能なコードの作成ガイド(Googleが内部で使用)を強くお勧めします。

于 2010-06-29T17:09:57.327 に答える