读书笔记-《Effective Java》第1条:考虑用静态工厂方法代替构造器

优势

  • 它们有名称

   构造器没有名称, 当一个类有多个构造器的时候就不容易分清楚哪个是自己想要的。

  • 不必在每次调用它们的时候都创建一个新对象

如果新创建的对象的成员属性是可以重用的, 那么可以先把第一次创建的对象保存起来,以后想用的时候就不用创建新的对象了。就是Singleton、实例受控的类。也可以控制对象实例的生死。因为多次调用返回统一实例的原因,要判断两个引用是否为一个对象,那么就可以用==判断,可以提高效率。

  • 它们可以返回原返回类型的任何子类型的对象
  • 在创建参数化类型实例的时候,它们使代码变得更加简洁

构造器上不能使用类型推导。可以看看 Lists.newArrayList()和Maps.newHashMap()方法的实现。

缺点

  • 类如果不含共有的或者受保护的构造器,就不能被子类化

当使用静态工厂方法创建对象时,一般都会把构造器私有化。就会导致类不能被继承。

  • 它们与其他的静态方法实际上没有任何区别

​​​​​​​所以注意给方法起个好名,变量名、类名也是如此。不能瞎求写。

猜你喜欢

转载自blog.csdn.net/baitianmingdebai/article/details/85220827
今日推荐