Builder模式

来源:互联网 发布:vr眼镜推荐 知乎 编辑:程序博客网 时间:2024/05/17 01:36

  如果类的构造器具有多个参数时,通常适用Builder模式类设计类。下面设计一个类表示包装食品外面显示的营养成分标签。

package BuilderPattern;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 carbohydrate;    //碳水化合物,糖类public static class Builder {//Required parametersprivate final int servingSize;private final int servings;//Optional parametersprivate int calories=0;private int fat=0;private int sodium=0;private int carbohydrate=0;public Builder(int servingSize,int servings) {// TODO Auto-generated constructor stubthis.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 sodium(int val) {sodium=val; return this;}public Builder carbohydrate(int val) {carbohydrate=val; return this;}public NutritionFacts build() {return new NutritionFacts(this);}}public NutritionFacts(Builder builder) {servingSize=builder.servingSize;servings=builder.servings;calories=builder.calories;fat=builder.fat;sodium=builder.sodium;carbohydrate=builder.carbohydrate;}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubNutritionFacts cocaCola=new NutritionFacts.Builder(240, 8).calories(100).build();System.out.println("cocaCola's calories:"+cocaCola.calories);}}


原创粉丝点击