Item2:Consider a builder when faced with many constructor parameters

当构造方法有多个参数时,可以考虑使用builder方式进行处理。

实例代码:

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{
//以下两个参数是必须的
private final int servingSize;
private final int servings; private int calories = 0;
private int fat = 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 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);
}
} private NutritionFacts(Builder builder){
servingSize = builder.servingSize;
servings = builder.servings;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carbohydrate = builder.carbohydrate;
}
}

使用方式:

public class Test {
public static void main(String[] args) {
NutritionFacts nf = new NutritionFacts.Builder(200, 80)
.calories(100).sodium(35).carbohydrate(20).build();
}
}

最新文章

  1. python-运算符
  2. Spring 通过工厂配置Bean
  3. monkeyrunner功能函数
  4. Android学习笔记之JSON数据解析
  5. 之前C#代码的重新设计
  6. 构建高可用web站点学习--前言
  7. document.documentElement和document.body区别
  8. 用jquery可以用使用serialize()序列化表单值,那有没有什么方法可以将值填充到表单中呢? (一段不错的代码)
  9. ContextMenuStrip 添加在窗体。点击右键不能显示问题解答
  10. 老李推荐: 第3章1节《MonkeyRunner源码剖析》脚本编写示例: MonkeyRunner API使用示例
  11. 代理模式-JDK Proxy(Java实现)
  12. Error "java.lang.NoClassDefFoundError:org/openxmlformats/schemas/spreadsheetml/x2006/main/CTExtensionList" in SoapUI
  13. .net core 2.0 Autofac
  14. iframe与主框架跨域相互访问方法
  15. C++ Primer 笔记——类
  16. 【iCore4 双核心板_uC/OS-II】例程十:信号量集
  17. Linux基础命令---文本编辑tee
  18. java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'waterQuality
  19. MyBatis框架入门之(二)
  20. c# 得到list符合某条件的索引值,排序

热门文章

  1. MFC单文档自定义扩展名及添加图标报Assertion错误
  2. led驱动程序设计
  3. ortp使用详解1
  4. ubuntu的web开发环境搭建
  5. CentOS启动MySQL服务失败
  6. __device__ __global__ __host__
  7. 程序猿的道路~~(How to be a programmer?)
  8. (各个公司面试原题)在线做了一套CC++综合測试题,也来測一下你的水平吧(二)
  9. 飞行模式下不让打开FM
  10. CentOS6.x升级MySQL版本号5.1到5.6