ループの最初の反復で条件が満たされ、builder.withPropertyA()メソッドが呼び出されます。第2の反復では、条件は満たされない。しかし、最初の反復では既にビルダーにプロパティAが設定されているため、ビルダークラスのビルドメソッドで作成された2番目のオブジェクトにはこのプロパティも含まれています。私はこの場合を避けたいと思います。だから問題は:どうすればいいのですか?ターゲットオブジェクトが作成された後、build()メソッド内のすべてのBuilderフィールドを「リセット」する必要がありますか?あるいは、毎回Builderの新しいインスタンスを作成する必要があります(ただし、これを行う方法がわからず、新しいキーワードを使用しないでください。コンテナから新しいBuilderインスタンスを取得する必要があります)。ヘルプ注射ビルダー
Q
注射ビルダー
0
A
答えて
-1
を事前に
ありがとうございますではなく、すべてのinvokationのための新しいビルダーインスタンスを返すビルダー注入生地を注入し、この場合にはファブリックを使用する必要があります。これは最も簡単で簡潔なソリューションです。 Builderを再利用するのではなく、コードと単体テストのケースを単純化します。パフォーマンスの理由から大量のSomeObject
を処理する場合は、Builderを再利用する必要がありますが、ファブリックの取引を行う必要があります。Builder
ファブリックコードを変更してBuilder
クラスのインスタンスを1つだけ作成し、create()
メソッドのビルダーをリセットし、 。このようにして、SomeBean
クラスのコードを変更する必要はありません。
public class SomeBean {
@Inject
private BuilderFabric builderFabric;
public void method() {
List<SomeObject> objects = ... ;
for (SomeObject object : objects) {
Builder builder = builderFabric.create();
if (someConditionSatisfy()) {
builder.withPropertyA(object.getPropertyA);
}
builder.withPropertyB(object.getPropertyB);
builder.withPropertyC(object.getPropertyC);
BuiltObject builtObject = builder.build();
someOutputList.add(builtObject);
}
}
}
public class BuilderFabric {
public Builder create() {
return new Builder();
}
}
関連する問題
- 1. レイジー<>注射注射
- 2. Dagger2:注射場もあるフィールド注射
- 3. プレイ:注射/
- 4. Routeprovider注射
- 5. $ rootScopeは、注射
- 6. ブラインドmongodb serverside注射?
- 7. RAD:依存性注射 - メリット?
- 8. 依存性注射中毒?
- 9. 注射を傍受する
- 10. 接続文字列注射
- 11. @Resource注射は溶接SE
- 12. PHPセキュリティチェックリスト(注射、セッションなど)
- 13. DI:注射する量は?
- 14. 依存性注射とスコープ?
- 15. ジャージーJAX-RSインスタンス注射
- 16. Laravelの集計注射
- 17. 可能な注射剤で
- 18. Angular2 @注射可能なサービスと非注射可能なサービスの違い
- 19. 角度2 - 注射用サービスは、別の注射サービスを必要とする -
- 20. angular2で多くの注射を行った別の注射剤から注射剤をどのように伸ばすべきですか?
- 21. scala-guiceと助けられた注射
- 22. 注射がTypescriptで機能しない
- 23. 私の石英の仕事の注射
- 24. 注射剤としての成分は?
- 25. 角多重依存性注射
- 26. MYSQL注射からの良い予防?
- 27. コトリンでvarに注射するには?
- 28. Angular2注射剤はありますか?
- 29. 注射がうまくいかない?
- 30. xss攻撃/注射を防ぐ