博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
effectiveJava(2)使用构建器
阅读量:4485 次
发布时间:2019-06-08

本文共 1702 字,大约阅读时间需要 5 分钟。

如果类的构造器或者静态工厂中具有多个参数,设计这样的类时,考虑使用Builder模式。尤其是大多数参数都是可选的时候,与使用传统的重叠构造器模式相比,使用

builder模式的客户端代码将更易于阅读和编写,构建器也比JavaBeans更加安全。示例如下

1 public class NutritionFacts { 2     private final int servingSize; 3     private final int servings; 4     private final int calories; 5     private final int fat; 6     private final int sodium; 7     private final int carbohydrate; 8  9     public NutritionFacts(Builder builder) {10         servingSize = builder.servingSize;11         servings = builder.servings;12         calories = builder.calories;13         fat = builder.fat;14         sodium = builder.sodium;15         carbohydrate = builder.carbohydrate;16     }17 18     public static class Builder {19         private final int servingSize;20         private final int servings;21         private int calories = 0;22         private int fat = 0;23         private int carbohydrate = 0;24         private int sodium = 0;25 26         public Builder(int servingSize, int servings) {27             this.servingSize = servingSize;28             this.servings = servings;29         }30 31         public Builder calories(int val) {32             calories = val;33             return this;34         }35 36         public Builder fat(int val) {37             fat = val;38             return this;39         }40 41         public Builder carbohydrate(int val) {42             carbohydrate = val;43             return this;44         }45 46         public Builder sodium(int val) {47             sodium = val;48             return this;49         }50 51         public NutritionFacts build() {52             return new NutritionFacts(this);53         }54     }55 }

 

转载于:https://www.cnblogs.com/dgq-blog/p/8943556.html

你可能感兴趣的文章
上传文件以二进制的形式存储
查看>>
html判断IE版本
查看>>
进制转换——9018——1065
查看>>
农奴翻身把歌唱
查看>>
Java删除文件夹下所有文件
查看>>
32位电脑“内置类型"所占空间大小
查看>>
NodeJS FTP模块使用
查看>>
内存管理2 - Win32汇编语言055
查看>>
Django---过滤器的使用
查看>>
Django【设计】同功能不同实现模式的兼容性
查看>>
用css3制作旋转加载动画的几种方法
查看>>
web: 屏蔽button元素的空格键和enter响应
查看>>
python
查看>>
C/C++中用va_start/va_arg/va_end实现可变参数函数的简单例子
查看>>
Ubuntu16.04安装mac主题(转载)
查看>>
java基础篇-环境变量的配置
查看>>
Callable 的使用
查看>>
js数据类型
查看>>
挖个坑,找时间整理下 泊松分布,指数分布和伽马分布
查看>>
svg札记
查看>>