eff多可选构造参数可考虑构建器

 1 package eff;
 2 
 3 /**
 4  * 如果类的构造器或者静态工厂中具有多个参数,设计这种类时,
 5  * Builder模式就是不错的选择,特别是大多数参数都是课选的时候。
 6  * 相对于javaBean较为安全,适用于多个可选参数的对象创建。
 7  * 
 8  * @author lw
 9  * 
10  */
11 public class NutritionFacts {
12     // required
13     private final int servingSize;
14     private final int servings;
15     // optional
16     private final int calories;
17     private final int fat;
18     private final int sodium;
19     private final int carbohydrate;
20 
21     /** 构建器 */
22     public static class Builder implements IBuilder<NutritionFacts> {
23         private final int servingSize;
24         private final int servings;
25         private int calories;
26         private int fat;
27         private int sodium;
28         private int carbohydrate;
29 
30 
31         public Builder(int servingSize, int servings) {
32             this.servingSize = servingSize;
33             this.servings = servings;
34         }
35 
36         public Builder calories(int val) {
37             calories = val;
38             return this;
39         }
40 
41         public Builder fat(int val) {
42             fat = val;
43             return this;
44         }
45 
46         public Builder sodium(int val) {
47             sodium = val;
48             return this;
49         }
50 
51         public Builder carbohydrate(int val) {
52             carbohydrate = val;
53             return this;
54         }
55 
56         public NutritionFacts build() {
57             return new NutritionFacts(this);
58         }
59     }
60 
61     public NutritionFacts(Builder builder) {
62         servingSize = builder.servingSize;
63         servings = builder.servings;
64         calories = builder.calories;
65         fat = builder.fat;
66         sodium = builder.sodium;
67         carbohydrate = builder.carbohydrate;
68     }
69 
70     public int getServingSize() {
71         return servingSize;
72     }
73 
74     public int getServings() {
75         return servings;
76     }
77 
78     public int getCalories() {
79         return calories;
80     }
81 
82     public int getFat() {
83         return fat;
84     }
85 
86     public int getSodium() {
87         return sodium;
88     }
89 
90     public int getCarbohydrate() {
91         return carbohydrate;
92     }
93 
94 }
 
posted @ 2012-07-12 12:06  blogs_lw  阅读(196)  评论(0编辑  收藏  举报