美文网首页
《Effective Java》读书笔记二:创建和销毁对象

《Effective Java》读书笔记二:创建和销毁对象

作者: 内卷星球 | 来源:发表于2019-10-10 14:34 被阅读0次

考虑用静态工厂方法替代构造器

静态工厂方法的优势

  1. 有名称
  2. 不必再每次调用的时候创建新对象
  3. 可以返回原返回类型的任何子类型对象
  4. 在创建参数化实例的时候,使代码变得更加简洁

静态工厂方法的缺点

  1. 类如果不含公有的或者受保护的构造器,就不能被子类化
  2. 与其他静态方法没有任何区别

遇到对各构造器参数时要考虑用构建器

如果类的构造器或者静态工厂种具有多个参数,设计时,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;
}

避免使用终结方法

终结方法通常是不可预测的,也是很危险的,一般情况下是不必要的。
使用终结方法会导致行为不稳定,降低性能,以及可移植性问题。

相关文章

网友评论

      本文标题:《Effective Java》读书笔记二:创建和销毁对象

      本文链接:https://www.haomeiwen.com/subject/cmizwqtx.html