JavaBeans pattern
【テーマ】
コンストラクタの引数が多い場合、何か良い方法はないか?
【概要】
いわゆるJavaBeans。
特徴は以下の通り。
- privateかつfinalでないfieldを持つ。
- 引数なしのpublicなコンストラクタを持つ。
- fieldには、getter/setterを介してアクセスする。
【補足】
インスタンスを生成する場合は、(1)まずコンストラクタを呼び出し、(2)その後必要に応じてsetterを呼び出して、オブジェクトを完成させます。
NutritionFacts target = new NutritionFacts(); target.setServingSize(250); target.setFat(0); target.setSodium(5);
【コード例】
/** * 栄養成分表を表すエンティティクラス */ public class NutritionFacts { // fields // 内容量(必須) private int servingSize; // 1人前の量(必須) private int servings; // カロリー(任意) private int calories; // 脂肪(任意) private int fat; // ナトリウム(任意) private int sodium; // 炭水化物(任意) private int carbohydrate; // constructor public NutritionFacts() { } // getter public int getServingSize() { return this.servingSize; } public int getServings() { return this.servings; } public int getCalories() { return this.calories; } public int getFat() { return this.fat; } public int getSodium() { return this.sodium; } public int getCarbohydrate() { return this.carbohydrate; } // setter public void setServingSize(int servingSize) { this.servingSize = servingSize; } public void setServings(int servings) { this.servings = servings; } public void setCalories(int calories) { this.calories = calories; } public void setFat(int fat) { this.fat = fat; } public void setSodium(int sodium) { this.sodium = sodium; } public void setCarbohydrate(int carbohydrate) { this.carbohydrate = carbohydrate; } }
【長所】
【短所】
オブジェクトの値の不変性は確保できません。