0
私のアプリケーションでは、すべてのリクエストを処理するサービスマネージャがあります。このService Managerは、特定の種類の要求を満たすために外部サービスを使用します。GUICEを使用して外部サービスを使用するデザインサービスマネージャクラス
たとえば、サンプルコードの下に考えてみます。
今Class ServiceManager{
private final A a;
private final B b;
private ExternalService externalService;
@Inject
public ServiceManager(A a, B b)
{
this.a =a;
this.b =b;
}
public void processIncomingRequestUsingExternalService(){...}
}
ために、Guiceの
- 使用セッター・インジェクションを使用して優れているアプローチExternalServiceを初期化し、将来のように「n」の数があるかもしれませんがこのタイプの外部サービスは、このService Managerが使用したいかもしれない画像になります。
- 私のアプリケーションの内部クラスであるクラスAとクラスBのオブジェクトのために、コンストラクタインジェクションを使用してください。
注: - ここではExternalServiceは外部サービスのヘルパーです。
コンストラクタ・インジェクション>すべての(例えばhttp://olivergierke.de/2013/11/why-field-injection-is-evil/) 。また、全能のマネージャークラスが悪いです。単一責任の原則は依然として大きなn =通常悪い設計に適用されます。 – zapl
@zapl大きなnの私のポイントは、私のマネージャーが使用しなければならないかもしれない2 - 3の外部サービスといえます。これらの外部サービスヘルパをすべてコンストラクタに追加するとよいでしょう。 –