2

私のプロジェクトは依存性注入を多用しており、サービスロケーターのアンチパターンを避けるように細心の注意を払っています。すべてのオブジェクトは、依存関係のリストを簡単に識別できるようにするコンストラクター注入を使用して構造化されています。今、私はオブジェクトを構築しており、基本的に静的/シングルトンである特別な「定数」インスタンスを持っています(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);
    }
    ...
}
4

1 に答える 1