考虑用静态工厂方法替代构造器
静态工厂方法的优势
- 有名称
- 不必再每次调用的时候创建新对象
- 可以返回原返回类型的任何子类型对象
- 在创建参数化实例的时候,使代码变得更加简洁
静态工厂方法的缺点
- 类如果不含公有的或者受保护的构造器,就不能被子类化
- 与其他静态方法没有任何区别
遇到对各构造器参数时要考虑用构建器
如果类的构造器或者静态工厂种具有多个参数,设计时,Builder模式就是不错的选择,尤其当大多数参数都是可选的时候。
用私有构造器或者枚举类型强化Singleton属性
单元素的枚举类型是实现Singleton的最佳实现。
通过私有构造器强化不可实例化的能力
当类不包含显式的构造器,编译器会自动生成(公有的,无参的)缺省构造器。
有些工具类不需要实例化,因此可以构造一个私有的构造器,但因此而来的问题是该类不能被子类继承。
避免创建不必要的对象
String str = new String("new string");
上文中的语句在每次执行的时候都会创建新的String实例,但是“new string”本身就是一个String实例。如果用在循环中,就会创建出很多不必要的String实例。
String str = "new string";
消除过期的对象引用
public Object pop(){
if(size == 0){
throw new EmptyStackException();
}
return elements[--size];
}
一旦对象引用已经过期,需要清空这些引用。
public Object pop(){
if(size == 0){
throw new EmptyStackException();
}
Object result = elements[--size];
// 清空引用
elements[size] = null;
return result;
}
避免使用终结方法
终结方法通常是不可预测的,也是很危险的,一般情况下是不必要的。
使用终结方法会导致行为不稳定,降低性能,以及可移植性问题。
网友评论