Effective java笔记

第一条:考虑用静态工厂方法代替构造函数

优点一: 静态方法可以有具体的名字,使代码更易读,尤其是有多个构造函数时.

优点二: 可以避免创建不必要的重复对象.

例如java中的Boolean类的实现:

package java.lang;

public final class Boolean implements java.io.Serializable,
                                      Comparable<Boolean>
{
    public static final Boolean TRUE = new Boolean(true);

    public static final Boolean FALSE = new Boolean(false);

    public static Boolean valueOf(String s) {
	return toBoolean(s) ? TRUE : FALSE;
	//......
    } 
}

优点三: 可以返回对象的子类型,从而迫使用户面向接口编程而非不是面向具体类.

缺点一: 如果不含有public,protected的构造函数,则无法为该类派生子类.(这里不太理解,既然构造函数是私有的,不就是表明不希望它被继承吗?)

缺点二: 无法再文档中被清晰的标明为构造函数.这个缺点可以通过规范的命名来弥补:如valueOf或getInstance都是不错的选择,后者在单例模式中被广泛应用.


第二条 使用私有构造函数强化singleton属性

第三条: 通过私有构造函数使类不可实例化

常用语有很多静态域和静态方法的"工具类".

第四条: 避免重复创造对象,尽可能重复使用一个对象

避免下面会导致重复创建对象的代码:

for(int i=0;i<100;i++)
    String s = new String("silly");
改进版本:
for(int i=0;i<100;i++)
    String s = "No longer silly";
小结:创建对象是有代价的,但创建小对象的代价并不高,除非你的对象非常heavy,否则不要考虑维护对象池(object pool);

ps:如果对象真的很heavy,可以考虑原型模式~~


第五条 消除过期的对象引用

一旦对象的引用过期,立即清空这些引用.


第六条 避免使用终结函数(finalizer)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值