質問

私はジンについてぼんやりと理解していますが、プレゼンターを注入するために機能しています。

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

ユーザークラスのコンストラクターに@Injectを追加し、GINモジュールにユーザーを追加しました...しかし、それとは別に、私は完全に迷子になりました。アプリプレゼンターにバインドしますか(それを試しましたが、ユーザーが私のapppresenterを拡張しないのでエラーが発生しました)?シングルトンとして?これは、このデータを渡す正しい方法でさえありますか?

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

よろしくお願いします。

役に立ちましたか?

解決

私は2つの可能性を見ます:

  • ソースがaに挿入されます @provides 方法またはa プロバイダー. 。ただし、問題は、Global StateがNO-NOであるため、現在ログインしているユーザーをそれらのメソッドに渡す方法です。可能な解決策はイベントバスを介してそれを渡すことですが、この時点では、DIの全体のポイントを倒すようです(現在ログインしているユーザーを注入することは、DIの役割ではなくiMhoです)。
  • イベントバスを介してユーザーを渡します。ユーザーがログイン/変更されたときに起動されるカスタムイベントを作成し、一部のプレゼンターはそのイベントを聴きます(結局、すべてのプレゼンターが現在のユーザーを知る必要があるわけではありません)。

私は2番目のアプローチを好み、使用します - Diは素晴らしいですが、あなたが説明した方法でそれを使用することは私にとってちょっとハッキッシュなようです。チェックアウトすることを強くお勧めします Guiceドキュメント - ジンは基本的にGWTで作業するためにうまく包まれているため、コアは同じです。他のいくつかのポインターについては、DIを効果的に使用する方法と一般的に、テスト可能なコードを書く方法を強くお勧めします Misko Heveryのブログ そしてその テスト可能なコードを書くためのガイド 彼はそこに我慢しました(Googleが内部的に使用)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top