读《effective java》笔记一:遇到多个构造器参数时要考虑用构造器
来源:互联网 发布:java erp 开源框架 编辑:程序博客网 时间:2024/05/18 02:23
第二条 遇到多个构造器参数时要考虑用构造器
这里考虑的是参数多的情况,如果参数个数比较少,那直接采用一般的构造方法就可以了。
书中介绍了写构造方法的时候几种方式:
1. 重叠构造方法模式:
缺点:有许多参数的时候,客户端代码会很难写,而且较难以阅读。
2. javaBeans模式:
缺点:
在构造过程中JavaBean可能处于不一致的状态,类本身无法判断是否有效性。
类做成不可变的可能。
3. builder模式:
优点:
在build方法生成对象的时候,可以做检查,判断是否符合要求
参数灵活
缺点:
创建对象必须先创建构造器,如果对性能要求非常高的应用少用为妙
具体实现代码:
这个调用的时候:
NutritionFacts cocaCola = new NutritionFacts.Builder(11,22).calories(1).fat(2).calories(3).build();
这里考虑的是参数多的情况,如果参数个数比较少,那直接采用一般的构造方法就可以了。
书中介绍了写构造方法的时候几种方式:
1. 重叠构造方法模式:
缺点:有许多参数的时候,客户端代码会很难写,而且较难以阅读。
2. javaBeans模式:
缺点:
在构造过程中JavaBean可能处于不一致的状态,类本身无法判断是否有效性。
类做成不可变的可能。
3. builder模式:
优点:
在build方法生成对象的时候,可以做检查,判断是否符合要求
参数灵活
缺点:
创建对象必须先创建构造器,如果对性能要求非常高的应用少用为妙
具体实现代码:
1.重叠构造方法模式:
public class NutritionFacts { private final int servingSize; private final int serviings; private final int calories; private final int fat; private int sodium; private int carbohydrate; public NutritionFacts(int servingSize, int serviings){ this(servingSize, serviings, 0); } public NutritionFacts(int servingSize, int serviings, int calories){ this(servingSize, serviings, calories, 0); } public NutritionFacts(int servingSize, int serviings, int calories, int fat){ this(servingSize, serviings, calories, fat,0); } public NutritionFacts(int servingSize, int serviings, int calories, int fat, int sodium){ this(servingSize, serviings, calories, fat, sodium,0); } public NutritionFacts(int servingSize, int serviings, int calories, int fat, int sodium, int carbohydrate){ this.servingSize = servingSize; this.serviings = serviings; this.calories = calories; this.fat = fat; this.sodium = sodium; this.carbohydrate = carbohydrate; }}
2. javaBeans模式:
public class NutritionFacts { private int servingSize; private int serviings; private int calories; private int fat; private int sodium; private int carbohydrate; public NutritionFacts(){} public void setServingSize(int servingSize) { this.servingSize = servingSize; } public void setServiings(int serviings) { this.serviings = serviings; } public void setCalories(int calories) { this.calories = calories; } public void setFat(int fat) { this.fat = fat; } public void setSodium(int sodium) { this.sodium = sodium; } public void setCarbohydrate(int carbohydrate) { this.carbohydrate = carbohydrate; }
3. builder模式
public class NutritionFacts { private final int servingSize; private final int serviings; 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 serviings; // 可以为空 private int calories = 0; private int fat = 0; private int sodium = 0; private int carbohydrate = 0; public Builder(int servingSize, int serviings) { this.servingSize = servingSize; this.serviings = serviings; } 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); } } public NutritionFacts(Builder builder) { servingSize = builder.servingSize; serviings = builder.serviings; calories = builder.calories; fat = builder.fat; sodium = builder.sodium; carbohydrate = builder.carbohydrate; }}
这个调用的时候:
NutritionFacts cocaCola = new NutritionFacts.Builder(11,22).calories(1).fat(2).calories(3).build();
- 读《effective java》笔记一:遇到多个构造器参数时要考虑用构造器
- effective java(一)遇到多个构造器参数 时要考虑用构建器
- Effective-Java学习笔记 遇到多个构造器参数时要考虑用构建器
- Effective java第二条:遇到多个构造器参数时要考虑用构造器
- Effective Java第二条:遇到多个构造器参数时要考虑用构建器
- Effective Java (2) - 遇到多个构造器参数时要考虑用构建器
- Effective Java 第二条:遇到多个构造器参数时要考虑用构建器
- effective java(2) 之遇到多个构造器参数时要考虑用构建器
- Effective Java -- 遇到多个构造器参数时要考虑用构建器(Builder)
- [Effective Java] 第2条 遇到多个构造器参数时要考虑用构造器
- effective java读书札记值第2条:遇到多个构造器参数时要考虑用构造器
- 遇到多个构造器参数时要考虑用构建器——Effective Java 读书笔记
- 《Effective java》读书记录-第2条-遇到多个构造器参数时要考虑用构建器
- Effective Java 2.2——遇到多个构造器参数时要考虑用构建器
- Effective Java 创建和销毁对象 2.遇到多个构造器参数时要考虑用构建器
- Effective Java 2 -- 遇到多个构造器参数的时候考虑构建器
- 2、遇到多个构造参数的时候需要考虑使用构建器(effective java)
- 第2条:遇到多个构造器参数时要考虑用构造器
- 欢必有大才
- Android应用签名打包
- 含有纯虚函数的例子
- fork后的exec
- STL排序链表
- 读《effective java》笔记一:遇到多个构造器参数时要考虑用构造器
- linux内核移植-移植2.6.35.4内核到s3c2440
- 查看手机上传感器的信息
- 老生常谈的“初始化”顺序
- 深入浅出SPARSE之【Chapter1】 Prologue
- 图形学 Direct3D的3D模型处理2 - 邻接三角形的信息及优化
- Quick to Redis,Java Client:Jedis in Action
- 大学毕业设计
- Viojs P1484 ISBN号码