Effective Java Second Edition --- Builder Pattern
2016-03-14 10:50
471 查看
如果类的构造器或者静态工厂中有多个参数,设计这种类时,Builder模式是一种不错的选择,特别是当大多数参数是可选的时候。
与使用传统的重载构造函数模式相比,使用Builder模式的客户端代码更易于阅读和编写,构造器也比javabeens更加安全。
代码如下:
View Code
main方法:
与使用传统的重载构造函数模式相比,使用Builder模式的客户端代码更易于阅读和编写,构造器也比javabeens更加安全。
代码如下:
/** * Created by zhanga.fnst on 2016/3/14. */ public class NutritionFacts { private final int servingSize; private final int servings; private final int calories; private final int flat; private final int sodium; private final int carbohydrate; public static class Builder{ //required parameters private final int servingSize; private final int servings; //Optional parameters private int calories = 0; private int flat = 0; private int sodium = 0; private int carbohydrate = 0; public Builder(int servingSize,int servings){ this.servingSize = servingSize; this.servings = servings; } public Builder calories(int val){ calories = val; return this; } public Builder flat(int val){ flat = 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; flat = builder.flat; sodium = builder.sodium; carbohydrate = builder.carbohydrate; } }
View Code
main方法:
/** * Created by zhanga.fnst on 2016/3/14. */ public class TestMain { NutritionFacts cocaCola = new NutritionFacts.Builder(240,8). calories(100).sodium(35).carbohydrate(27).build(); }
相关文章推荐
- Druid连接池简单入门配置
- UIScrollerView循环滚动,加定时器和pageControl
- ligerUIGrid自适应BUG的解决方法
- UITableView优化技巧
- Qt使用教程之使用Qt Quick UI表单(六)
- HDU 5297 Y sequence 容斥 迭代
- UIGestureRecognizer 手势识别
- iOS-UITableView图解
- getpwuid()函数,getpgrgid()函数()
- iOS本地通知推送使用:UILocalNotification
- setuid()函数,setgid()函数,getpriority()函数,setpriority()函数,nice()函数
- uestc 482 Charitable Exchange 广搜+优先队列优化
- 创建透明的UIToolbar
- semantic-ui使用gulp执行build-css报错
- UITableView的数据源(dataSource)
- Android Studio Preview 报错 org.jetbrains.android.uipreview.RenderingException
- 《iOS Human Interface Guidelines》——Page View Controller
- iOS应用开发中UITableView的分割线的一些设置技巧
- java得到request
- 15分钟搞定iOS9 Quick Actions