Effective Java所思一

第一章 创建和销毁对象
观点一:考虑静态工厂方法代替构造函数:
好处1:能完整的表述语义,可读性,可操作性方面的改进;
好处2:每次调用时,不一定要创建新的对象,改进性能;
运用了singleton单态模式;
==和equals的使用,前者的性能由于后者,单态的实现使得equals用==替代成为了可能;
好处3:可返回原有类型的子类对象。
实现了面向对象的思想,封装细节。对外提供的只是接口,具体实现实现了封装。

经典案例:properties文件存储key=string格式的结构,管理类负责解析,初始化,静态工厂方法负责映射生成对象。
缺点1:类如果不含共有的或者受保护的构造函数,就不能被子类化;
缺点2:本身不是标准的一部分,需要配合文档使用,对文档描述要求较高。

观点2:使用私有构造函数强化singleton属性:

观点3:通过私有构造函数强化不可实例化的能力:
通常工具类采用这种技术。只是希望调用静态的方法和静态的域,不希望被实例化。
思考:能子类化吗?

观点4:避免创建重复的对象:
对象的创建和销毁是有代价的,对于可以重复使用,尤其是不变的(immutable)对象而言,需要被重用,而不是频繁的创建和销毁。
反例:String s = new String(“哈哈”);
应改为:String s = “哈哈”;
tips:对象的创建和销毁是有代价的,但这种代价大多指的是哪些复杂的对象;小的对象,这种代价是很小的。把握那个传说中的度。

观点5:消除过期的对象引用:
便于垃圾回收,消除内存泄漏的隐患。
注意:对于过期应用(obsolete reference),尤其需要消除。

观点6:避免使用终结函数:
finalizer
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值