私のプロジェクトは依存性注入を多用しており、サービスロケーターのアンチパターンを避けるように細心の注意を払っています。すべてのオブジェクトは、依存関係のリストを簡単に識別できるようにするコンストラクター注入を使用して構造化されています。今、私はオブジェクトを構築しており、基本的に静的/シングルトンである特別な「定数」インスタンスを持っています(Integer.MinValueのようなものの例を考えてください)。したがって、私の最初の反射は、静的な「ゲッター」メソッドを使用して静的フィールドを作成することでした。これにより、オブジェクトが以前に作成されていない場合は、オブジェクトのインスタンスが作成されます。ただし、オブジェクト自体には依存関係があるため、この「特別なインスタンス」をインスタンス化するためのベスト プラクティスについて混乱しています。このシナリオでコードを最適に構成する方法に関する推奨事項を探しています。理想的には、依存関係の解決のためにコンテナーを呼び出す必要はありません。いくつかのコード:
public class PressureUnit extends DataUnit {
private static PressureUnit standardAtmosphere;
public static PressureUnit StandardAtmosphere() {
if(standardAtmosphere == null){
standardAtmosphere = new PressureUnit(1013.25); // this line is what is bothering me as I need to resolve other dependencies (have to use new as it's a static method and can't be injected like everywhere else)
}
return standardAtmosphere;
}
@AssistedInject
public PressureUnit(ITimeProvider timeProvider, IUnitProvider unitProvider, @Assisted double value) {
this(timeProvider, unitProvider, value, PressureUnits.hPa);
}
...
}