创建和销毁对象

本文是Java 四大教科书之一的Effective Java的中文第三版的笔记整理

第二章:创建和销毁对象

1,用静态方法类替代构造器

为什么要使用静态方法而不是public构造器:
优点:
1,静态方法是有名字的,构造器只能根据参数来决定返回实例的类型.但是通过静态工厂方法就可以避开这个过程.
2,可以复用对象,不用每次都创建一个新的实例,而这个实例可以是提前构造好的,从而实现实例受控类.
3,返回原返回类型的任何子类的对象.
4,返回对象的类可以随着每次调用而发生变化,取决于参数值.
5,方法返回的对象的所属类,在编写包含该静态工厂方法的类时可以不存在

缺点:
1,类如果不包含公有的或者protected的构造器,就不能被子类化.
2,程序员可能无法发现他们

2.遇到多个构造器参数时要考虑使用构造器

因为静态工厂和构造器都有个共同的局限性,不能扩展到大量的可选参数.
一个替代的方法是用的javaBeans模式,先调用一个无参构造器来构造对象,然后使用setter方法来设置必要的参数.
但是这个办法也会有线程安全的问题,如果强行冻结的话就很笨拙.

实际生产过程中是用的建造者模式来处理,使用lombok的builder方法,先使得客户端利用所有必要的参数调用构造器,得到一个builder对象,再在builder对象上调用build方法来生成不可变的对象.
builder一般是它构建的类的静态成员类.
优点是流式编程,而且模拟了具名的可选参数.

一个大优点是便于扩展参数,对于之前的代码,可以保持原有的builder不变.

3.用私有构造器或者枚举类型强化Singleton属性

首先要注意私有方法还是可以被反射给调用,所以要在构造器中添加二次创建就报异常的机制.
有两种常见方法:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值