Builder Pattern

常用于有很多属性的类的实例化

 //  Builder Pattern 
          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 parameters 
                   private final int servingSize; 
                   private final int servings; 

                   // Optional parameters - initialized to default values 
                   private 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(); 

猜你喜欢

转载自mcqueen.iteye.com/blog/1027290