Effective Java Item2:Consider a builder when faced with many constructor parameters
2024-10-19 00:23:17
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();
}
}
最新文章
- python-运算符
- Spring 通过工厂配置Bean
- monkeyrunner功能函数
- Android学习笔记之JSON数据解析
- 之前C#代码的重新设计
- 构建高可用web站点学习--前言
- document.documentElement和document.body区别
- 用jquery可以用使用serialize()序列化表单值,那有没有什么方法可以将值填充到表单中呢? (一段不错的代码)
- ContextMenuStrip 添加在窗体。点击右键不能显示问题解答
- 老李推荐: 第3章1节《MonkeyRunner源码剖析》脚本编写示例: MonkeyRunner API使用示例
- 代理模式-JDK Proxy(Java实现)
- Error ";java.lang.NoClassDefFoundError:org/openxmlformats/schemas/spreadsheetml/x2006/main/CTExtensionList"; in SoapUI
- .net core 2.0 Autofac
- iframe与主框架跨域相互访问方法
- C++ Primer 笔记——类
- 【iCore4 双核心板_uC/OS-II】例程十:信号量集
- Linux基础命令---文本编辑tee
- java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'waterQuality
- MyBatis框架入门之(二)
- c# 得到list符合某条件的索引值,排序
热门文章
- MFC单文档自定义扩展名及添加图标报Assertion错误
- led驱动程序设计
- ortp使用详解1
- ubuntu的web开发环境搭建
- CentOS启动MySQL服务失败
- __device__ __global__ __host__
- 程序猿的道路~~(How to be a programmer?)
- (各个公司面试原题)在线做了一套CC++综合測试题,也来測一下你的水平吧(二)
- 飞行模式下不让打开FM
- CentOS6.x升级MySQL版本号5.1到5.6