第二章 创建和销毁对象
第一条:考虑用静态工厂方法代替构建器
. 我们知道有几种方法创建对象,最常用的就是用new+构建器()创建对象。(其他 运用反射手段,调用对象的clone()方法,序列化的readObject()也可以创建对象)。但是如果程序经常请求创建相同的对象,用new的话性能就会很低(每new一个对象都占用一块内存)。
于是我们可以用静态工厂方法代替new。例如:
public static ClassName getInstance(){
return new ClassName();
}
他的优点有:1,有名称 如getInstance(可以换个见名知意的名字);
2,只占用一份内存(static);
3,可以返回类型的任何子类型的对象;
4,参数化类型实例时,可使代码变得更加简洁。
第二条:遇到多个构建器参数时要考虑用构建器
Builder模式。。。
第三条:用私有构建器或者枚举类型强化Singleton属性
Public class Single{
Private static final Single instance = new Single();
Private Single(){}
Public static Single getInstance(){
Return instance;
}
}
或者:
Public enum Single{
INSTANCE;//The best way!!!
}
第四条:通过私有构建器强化不可实例化的能力
有些工具类只提供静态域及方法,并不需要实例化。如Math类Arrays类等等。我们可以通过私有化构建器阻止他的实例化!
Public class Test{
Private Test(){
//调用此构建方法时便抛出异常,完全阻止实例化!
Throw new AssertionError();
}
}
第五条:避免创建补必要的对象
1:不要用String str = new String(”test”);用String str = “test”即可;
2:考虑用static块; static {}//只用一次
第六条:消除过期的对象引用
Java虽然有自动垃圾回收功能,但也有内存泄露产生。
第七条:避免使用终结方法 finalizer