首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

2.碰到多个构造器参数时要考虑用构建器

2012-12-25 
2.遇到多个构造器参数时要考虑用构建器使用builder模式生成对象,参考示例代码// Builder Patternpublic cl

2.遇到多个构造器参数时要考虑用构建器

使用builder模式生成对象,参考示例代码

// Builder Patternpublic 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 carbohydrate;public static class Builder {// Required parametersprivate final int servingSize;private final int servings;// Optional parameters - initialized to default valuesprivate int calories = 0;private int fat = 0;private int carbohydrate = 0;private int sodium = 0;public Builder(int servingSize, int servings) {this.servingSize = servingSize;this.servings = servings;}public Builder calories(int val){ calories = val; return this; }public Builder fat(int val){ fat = val; return this; }public Builder carbohydrate(int val){ carbohydrate = val; return this; }public Builder sodium(int val){ sodium = val; return this; }public NutritionFacts build() {return new NutritionFacts(this);}}private NutritionFacts(Builder builder) {servingSize = builder.servingSize;servings = builder.servings;calories = builder.calories;fat = builder.fat;sodium = builder.sodium;carbohydrate = builder.carbohydrate;}}

?使用构造器:

NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8).calories(100).sodium(35).carbohydrate(27).build();

?builder模式模拟了具名可选参数。

builder模式的不足:为了创建对象,必须先创建它的构建器,且更加冗长。

如果类的构造器或静态工厂中有多个参数,而且将来还可能增加参数,则使用builder模式就比较方便。

热点排行