作成者に多数のパラメータがある場合は、コンストラクタアレイを考慮します.
多くのプログラマは、作成者パラメータが多い場合に適切な応答を行うために、ポイント積層ジェネレータアレイを主に使用します.
可読性が悪いという問題がある.
(各パラメータが何を意味するかを正確に知り、使用しなければならないので、使いにくい)
上記の階層型ジェネレータモードの欠点を補うために、JavaBeansモードと呼ぶことが考えられる.
その欠点は、完全なインスタンスを作成するには複数の方法が必要であり(一定に保つことはできません)、インスタンスが完全に作成される前に一貫性が崩壊した状態で存在する必要があります.
これらのポイント積層ジェネレータアレイとJavaBeansアレイの欠点を補うには、コンストラクタアレイを使用します.
ex) 점층적 생성자 패턴 예시
public class NutritionFacts {
private final int servingSize;
private final int servings;
private final int calories;
private final int fat;
private final int sodium;
private final int carbohyudrate;
public NutritionFacts(int servingSize, int servings) {
this(servingSize, servings, 0);
}
public NutritionFacts(int servingSize, int servings, int calories) {
this(servingSize, servings, calories, 0);
}
public NutritionFacts(int servingSize, int servings, int calories, int fat) {
this(servingSize, servings,calories,fat,0);
}
public NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium) {
this(servingSize, servings,calories, fat,sodium,0);
}
public NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium, int carbohyudrate) {
this.servingSize = servingSize;
this.servings = servings;
this.calories = calories;
this.fat = fat;
this.sodium = sodium;
this.carbohyudrate = carbohyudrate;
}
}
以上のレイヤごとのジェネレータモードのパラメータが多ければ多いほど、クライアントコードはぼやけます.可読性が悪いという問題がある.
(各パラメータが何を意味するかを正確に知り、使用しなければならないので、使いにくい)
上記の階層型ジェネレータモードの欠点を補うために、JavaBeansモードと呼ぶことが考えられる.
ex) 자바 빈즈 패턴
NutritionFacts nutritionFacts = new NutritionFacts();
nutritionFacts.setFat(0);
nutritionFacts.setCalories(0);
nutritionFacts.setServingSize(0);
JavaBeansアレイを使用すると、インスタンスの作成が容易になり、読みやすさが向上します.その欠点は、完全なインスタンスを作成するには複数の方法が必要であり(一定に保つことはできません)、インスタンスが完全に作成される前に一貫性が崩壊した状態で存在する必要があります.
これらのポイント積層ジェネレータアレイとJavaBeansアレイの欠点を補うには、コンストラクタアレイを使用します.
NutritionFacts nutritionFacts = NutritionFacts.builder()
.carbohyudrate(1)
.fat(2)
.calories(3)
.servings(2)
.build();
コンストラクタ・モードは、クライアント・コードの読み取り可能性を向上させ、javabeansモードよりもインスタンスの作成をより安全にします.Reference
この問題について(作成者に多数のパラメータがある場合は、コンストラクタアレイを考慮します.), 我々は、より多くの情報をここで見つけました https://velog.io/@wodyd202/이펙티브-자바-생성자에-매개변수가-많다면-빌더-패턴을-고려할-것テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol