在多参数(一般在大于4个参数以上)的情况下 或者参数个数不清楚的情况下使用。

 

  1. public class NutritionFacts {  
  2.     private final int servingSize;  
  3.     private final int servings;  
  4.     private final int calories;  
  5.     private final int fat;  
  6.     private final int sodium;  
  7.     private final int carbohydrate;  
  8.       
  9.     public static class Builder{  
  10.         private final int servingSize;  
  11.         private final int servings;  
  12.           
  13.         private int calories = 0;  
  14.         private int fat = 0;  
  15.         private int sodium = 0;  
  16.         private int carbohydrate = 0;  
  17.           
  18.         public Builder(int servingSize, int servings) {  
  19.             super();  
  20.             this.servingSize = servingSize;  
  21.             this.servings = servings;  
  22.         }  
  23.           
  24.         public Builder calories(int val){  
  25.             this.calories=val;  
  26.             return this;  
  27.         }  
  28.           
  29.         public Builder fat(int val){  
  30.             this.fat=val;  
  31.             return this;  
  32.         }  
  33.           
  34.         public Builder sodium(int val){  
  35.             this.sodium=val;  
  36.             return this;  
  37.         }  
  38.           
  39.         public Builder carbohydrate(int val){  
  40.             this.carbohydrate=val;  
  41.             return this;  
  42.         }  
  43.           
  44.         public NutritionFacts build(){  
  45.             return new NutritionFacts(this);  
  46.         }  
  47.     }  
  48.       
  49.     private NutritionFacts(Builder builder){  
  50.         this.servingSize=builder.servingSize;  
  51.         this.servings=builder.servings;  
  52.         this.calories=builder.calories;  
  53.         this.fat=builder.fat;  
  54.         this.sodium=builder.sodium;  
  55.         this.carbohydrate=builder.carbohydrate;  
  56.     }  
  57.       
  58. }  

调用:

 

  1. NutritionFacts mNutritionFacts=new NutritionFacts.Builder(2408). 
  2.                         calories(100).carbohydrate(27).sodium(35).build();