Builder模式的思考(Effective Java)
《Effective Java》(第2版)中第二条中提到:遇到多个构造器参数时要考虑用构建器。在复习static关键字和内部类时回头看了一下,这才明白了为什么要用静态内部类来做处理,这里记录一下。
- 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;//份
- //必要参数
- public Builder(int servingSize,int servings){
- this.servingSize=servingSize;
- this.servings=servings;
- }
- private int calories = ;
- private int fat = ;
- private int sodium = ;
- private int carbohydrate = ;
- 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;
- }
- }
- NutritionFacts cocoCola = new NutritionFacts.Builder(,).calories().carbohydrate().build();
Builder模式的思考(Effective Java)的更多相关文章
- Java设计模式(3)建造者模式(Builder模式)
Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构 ...
- Builder模式详解及其在Android开发中的应用
一.引言 在Android开发中,采用Builder模式的代码随处可见,比如说Android系统对话框AlertDialog的使用或者是Android中的通知栏(Notification)的使用,又比 ...
- Builder模式的目的是解耦构建过程,为什么要用内部类?
还没有看过Builder模式的作用,看过一篇介绍Builder模式的文章,这里是关于Builder模式的思考:思考是否有比新建一个内部类更好的方法,首先想到的是 package xyz.n490808 ...
- 同事写了一个疯狂的类构造器,我要疯了,Builder 模式都不会么?!
疯狂的类构造器 最近栈长在做 Code Review 时,发现一段创建对象的方法: Task task = new Task(112, "紧急任务", "处理一下这个任务 ...
- 疯狂的类构造器Builder模式,链式调用
疯狂的类构造器 最近栈长在做 Code Review 时,发现一段创建对象的方法: Task task = new Task(112, "紧急任务", "处理一下这个任务 ...
- 解析《Effective Java》之多个构造器、Javabeans模式和Builder模式
最近看<Effective Java>这本被很多同行称为神作的书,但是这本书很多地方缺少了举例不好懂,下面是关于我对书上知识的理解. 一.<Effective Java>中文版 ...
- effective java 3th item2:考虑 builder 模式,当构造器参数过多的时候
yiaz 读书笔记,翻译于 effective java 3th 英文版,可能有些地方有错误.欢迎指正. 静态工厂方法和构造器都有一个限制:当有许多参数的时候,它们不能很好的扩展. 比如试想下如下场景 ...
- Effective Java 第三版——2. 当构造方法参数过多时使用builder模式
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Builder模式在Java中的应用
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成.那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Build ...
随机推荐
- JVM性能调优,GC
刚刚做完了一个项目的性能测试,“有幸”也遇到了内存泄露的案例,所以在此和大家分享一下. 主要从以下几部分来说明,关于内存和内存泄露.溢出的概念,区分内存泄露和内存溢出:内存的区域划分,了解GC回收机制 ...
- Intel Core Microarchitecture Pipeline
Intel微处理器近20年从Pentium发展到Skylake,得益于制作工艺上的巨大发展,处理器的性能得到了非常大的增强,功能模块增多,不过其指令处理pipeline的主干部分算不上有特别大的变化, ...
- masonry 设置控件抗压缩及抗拉伸
使用masonry正常设置约束时两个label的显示是下图 添加代码设置蓝色label的抗压缩属性后( [self.missionNameLabel setContentCompressionResi ...
- C# 判断文件编码
我们的项目中会包含有很多文件,但是可能我们没有注意到的,我们的文件的编码不一定是utf-8,所以可能在别人电脑运行时出现乱码.最近在做一个项目,这个项目可以把我们的文件夹里的所有文本,判断他们是什么编 ...
- MySQL比like语句更高效的写法locate position instr find_in_set
使用内部函数instr,可代替传统的like方式查询,并且速度更快. instr函数,第一个参数是字段,第二个参数是要查询的串,返回串的位置,第一个是1,如果没找到就是0. 例如, select na ...
- JavaScript的function参数的解释
在js里面写function时其参数在内部表示为一个数组.也就是说:我们定义一个function,里面的参数和将来调用这个function时传入的实参是毫无关系的,如果我们要定义一个function ...
- 保存单文件为mhtml
1.F6 ,在地址栏输入 输入:chrome://flags 然后ctrl+f: 输入:mhtml 启动,重启即可保存为单文件.
- Linux下如何高效删除一个几十G的文本文件的最后一行或几行
当我们在服务器端记录日志或文本数据时,有时候会有需要删除一个大文件的最后几行,这时如何才能高效实现. 上网浏览终于找到dd命令,亲测如下,删除一个32GB的日志文件最后100行仅需要4分钟 [root ...
- System.getProperty参数大全
System.getProperty()参数大全 #java.version Java Runtime Environment v ...
- Hibternate框架笔记
Hibernate框架 配置 配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE h ...