一、重叠构造器模式

当我们的实体属性过多时,采用重叠构造器也是一种不错的选择,具体例子如下:

这种方式有他固有的缺点,当参数非常多时,构造方法太多以致于类无法更系统地管理

二、JavaBeans模式

当参数非常多时,上一种方式显然不适用,这时我们可以使用JavaBeans模式,JavaBeans模式的模式就是用set的方式进行赋值,这种方式代码易懂,但是容易造成线程安全,因为赋值的过程是由多条语句组成的,具体实例如下:

三、建造者模式

鉴于以上两种方式都有响应的缺点,当创建参数过多的实体时,最适宜采用建造者模式,具体代码如下:

四、总结

如果类的构造器或者静态工厂中具有多个参数,设计这种类时,建造者模式是一种不错地选择

Java九十条经验法则之第二条:遇到多个构造器时要考虑使用构建器相关推荐

  1. Java九十条经验法则之第一条:用静态工厂方法代替构造器

    一.用静态工厂方法代替构造器的优势 1.静态构造方法与构造器不同的第一大优势在于,他们有名称,而构造器名字相同,容易混淆,例如: 使用静态构造方式的方式,我们就可以通过知道产生的是什么样类型的对象,而 ...

  2. Effective Java 创建和销毁对象 2.遇到多个构造器参数时要考虑用构建器

    静态工厂跟构造器都有一个共同的局限性:不能很好的扩展到大量的参数. 例: package com.example.yancy.yancy; /**  * Created by yancy on 201 ...

  3. Effective Java(第3版) 90条经验法则

    目录 第2章 创建和销毁对象 第1条:用静态工厂方法替代构造器 第2条:遇到多个构造器参数时要考虑使用构建器 例子 使用 第3条:用私有构造器或者枚举类型强化Singleton属性 例子 使用 第4条 ...

  4. 【Effective Java】第二章:静态工厂、构建器、强化Singleton属性、私有构造器、

    文章目录 一. 用静态工厂方法代替构造器 优势: 劣势: 实例代码: 二. 遇到多个构造器参数时要考虑使用构建器 ① 重叠构建器 ② JavaBeans模式 ③ Builder模式 三. 用私有构造器 ...

  5. Effective Java(一)———— 代替构造器和Setter的构建器模式

    引言 Java语言中的一部经典著作<Effective Java>,里面涵盖了78条我们应该熟练的Java编程技巧. 本篇博客是该书学习的系列笔记第一篇.本系列博客不会与书中的78条建议完 ...

  6. Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交。第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4)

    Java黑皮书课后题第9章:**9.12(几何:交点)假设两条线段相交.第一条线段的两个端点是(x1, y1)和(x2, y2),第二条线段的两个端点是(x3, y3)和(x4, y4) 题目 破题 ...

  7. Java黑皮书课后题第3章:*3.25(几何:交点)第一条直线上面的两个点是(x1,y1)(x2,y2),第二条(x3,y3)(x4,y4),通过Cramer规则求出线性方程组

    *3.25(几何:交点)第一条直线上面的两个点是(x1,y1)(x2,y2),第二条(x3,y3)(x4,y4),通过Cramer规则求出线性方程组 题目 题目概述 题目给出的线性方程组 Cramer ...

  8. Google 机器学习应用的43条经验法则

    Google 的研究科学家 Martin Zinkevich 曾在 NIPS 2016 Workshop 分享了谷歌机器学习实践的四十三条法则.Martin Zinkevich 也在自己的博客上分享了 ...

  9. 反向图——dj算法(判断从起点 开始有没有第二条路径能到达)Gym 102501K

    Gym 102501K BirdwatchingGym 102501K 题意:题目比较难读,就是给你一个t点 找到所有 i->t的i点 没有第二条路径到达t点. 思路:反向图 跑dj算法,但是要 ...

最新文章

  1. 数据库-数据库设计原则-范式概念
  2. 汇编语言(三十四)之输出中文
  3. Python(1)-源起、设计目标、设计哲学、特点
  4. 拼小圈营销群_深圳弘辽科技电商:拼多多“砍单免费拿”:一场关于人性的较量...
  5. MyEclipse提示Errors occurred during the build
  6. 计算机基础类报刊,全国“xx杯”计算机应用基础类说课大赛优秀作品:图文表混排-制作感恩报刊说课课件...
  7. flask部署pytorch模型
  8. 腾讯 2016 春季实习校招模拟笔试
  9. 9.企业应用架构模式 --- 领域逻辑模式
  10. 鸿蒙系统为什么腾讯,鸿蒙系统发布,为什么有人说其为安卓换壳?
  11. 阿里云ACP认证哪个值得考?考试时间怎么安排?
  12. android email分析,QQ邮箱Android客户端产品体验报告
  13. 【vbs脚本】02.高级
  14. 信息安全技术:健康医疗数据安全指南思维导图
  15. Python-Flask开发微电影网站(八)
  16. 微信小程序 18 播放记录和video页面初步搭建
  17. [投资理念]沃伦-巴菲特的12条忠告
  18. Bartender 4能实现菜单栏自定义文字,图标显示切换大变样!
  19. 第一章第十题(以英里计的平均速度)(Average speed in miles)
  20. 外贸企业邮箱,选择海外群发邮件稳定的邮箱

热门文章

  1. 程序员的自我修养------勘误表
  2. Python利用Twitter API根据tweet id抓取tweet(via tweepy/twython)
  3. [转]花了500学的seo课程教程笔记公布
  4. 服务器内存不足导致程序(tomcat)崩溃
  5. 白盒测试模板用例:三角形测试
  6. 利用cad等高线生成dem的步骤
  7. 老虎证券社招java工程师
  8. mstsc登录xubuntu16.04
  9. 怎么把录音导入库乐队_库乐队怎么导入音乐_怎么将音乐导入到库乐队中 库乐队导入音乐的方法...
  10. 添加项目到debug调试