建议1:考虑用静态工厂方法代替构造器

理由:1)静态方法有名字啊,更容易懂和理解。构造方法重载容易让人混淆,并不是好主意

   2)静态工厂方法可以不必每次调用时都创建一个新对象,而公共构造函数每次调用都会创建一个对象实例。就可以预先创建好对象嘛,从而能避免创建不可重复的对象。

    静态工厂方法能为重复的调用返回相同对象。

缺点:如果类没有构造函数,就不能被子类化了,子类的super()就没法用了

建议2:遇到多个构造器参数时,考虑采用构建器

理由:重叠构造函数形式,构造函数重载。

当遇到很多构造器参数的时候,可以采用javabean模式。这种模式下,调用一个无参构造函数,然后调用setter来设置每个必要的参数及相关可选参数。

但是java bean模式有个致命问题,因为要很多步骤创建bean,就造成了这个bean 线程不安全,状态不一致。就需要程序员付出额外的努力保证他线程安全。

第三种

转载于:https://www.cnblogs.com/panxuejun/p/7285023.html

Effictive Java学习笔记1:创建和销毁对象相关推荐

  1. 《Effect Java》学习笔记1———创建和销毁对象

    第二章 创建和销毁对象 1.考虑用静态工厂方法代替构造器 四大优势: i. 有名称 ii. 不必在每次调用它们的时候都创建一个新的对象:   iii. 可以返回原返回类型的任何子类型的对象: JDBC ...

  2. Java学习笔记:创建线程的两种方法

    Java学习笔记:创建线程的两种方法 一.预备工作 1.创建Maven项目ThreadDemo 2.在pom.xml里添加依赖 二.继承Thread类创建子线程

  3. Effective Java(1)-创建和销毁对象

    Effective Java(1)-创建和销毁对象 转载于:https://www.cnblogs.com/Johar/p/10556218.html

  4. 【Java学习笔记六】常用数据对象之String

    字符串 在Java中系统定义了两种类型的字符串类:String和StringBuffer String类对象的值和长度都不能改变,称为常量字符串类,其中每个值称为常量字符串. StringBuffer ...

  5. 【Java学习笔记一】类和对象

    面向对象程序设计的一个一个重要特点是:封装性. 这里的封装性有两方面含义:一是将有关的数据和操作代码封装在一个对象中形成一个基本单位,各个对象之间相互独立互不干扰,二是将对象中某些部分对外隐蔽,即隐蔽 ...

  6. Java学习笔记-12.传递和返回对象

    1.Clone()方法产生一个object,使用方法后必须产生的object赋值. Vector v2 = (Vector)v.clone(); 2.Clone()方法在object中是保护类型方法, ...

  7. 【Java学习笔记七】常用数据对象之数组

    同一般的对象创建和定义一样,数组的定义和创建可以分开进行也可以合并一起进行. 一维数组定义格式: <元素类型>[] <数组名>;//[]也可以放在数组名的后面 一维数组创建格式 ...

  8. java学习笔记(十一)基本数据类型的对象包装类

    基本数据类型的对象包装类 --------------------------- 基本数据类型      包装类   boolean         Boolean   byte            ...

  9. Effective Java(一)—— 创建和销毁对象

    在客户端(调用端)获取自身实例的方法: 公有的构造器: 类的静态工厂方法: 1. 使用静态工厂方法代替构造器 Boolean 是对基本类型 boolean 的包装类: public final cla ...

最新文章

  1. Spring Security 实战干货:OAuth2第三方授权初体验
  2. DataList编辑、更新、取消、删除、分页(分页控件 AspNetPager.dll)
  3. 08_传智播客iOS视频教程_Foundation框架
  4. 项目中使用Quartz集群分享--转载
  5. 逻辑漏洞之任意用户登陆漏洞
  6. oracle查被锁存储过程,oracle 结束被锁的包或存储过程
  7. 韵乐x5效果器ktv最佳参数_家庭ktv(卡拉ok)家庭影院ktv选购推荐攻略
  8. 这样就算会了PHP么?-11
  9. MinIO客户端快速入门指南
  10. Linux shell统计文件数脚本,使用shell脚本巧妙统计文件
  11. 数据的分析的方法及评价指标总结
  12. vs2015调试iisexpress无法启动的问题解决方案整理
  13. FontAwesome 字体图标库 使用
  14. 【微服务架构】让我们谈谈“拥有”他们的数据的微服务
  15. ffmpeg 截取切割视频报错
  16. ERP - 国际贸易术语(Incoterm)总结
  17. css 实现图片间用间隔线(竖线)
  18. 怎样设置阿里云Web应用攻击防护?
  19. 2022年中级会计中级经济学法考试复习题及答案
  20. 限速之令牌桶和漏桶算法

热门文章

  1. react脚手架_react脚手架create-react-app安装与使用
  2. 所有浏览器主页惨遭篡改:http://wangzhi6.dhtz444.top/或https://www.2345.com/
  3. Specified key was too long; max key length is 767 bytes解决方案
  4. springMVC前后端各种类型数据绑定
  5. 软件过程改进杂谈 00.序
  6. 北大AI第八讲 李航 自然语言处理的现实与挑战
  7. 到底他怎么赚钱了啊?看来看去也看不出他赚钱了,看来经济头脑有限啊
  8. 使用Python抓取网页信息
  9. JS数组的相关操作(循环、查找、过滤、排序等)
  10. vim写python_用 Vim 写 Python 的最佳实践