【Effective Java读书笔记】创建和销毁对象(一):考虑使用静态工厂方法代替构造器

类可以提供一个静态方法,返回类的一个静态实例,如Boolean包装类的一个获取实例的静态方法

1 public static Boolean valueOf(boolean b) {
2        return (b ? TRUE : FALSE);
3    }

   优势:

   1、有名称。当一个类需要多个带有相同签名的构造器时,就用静态工厂方法代替构造器,并慎重选择名称以突出它们之间的区别。 如:BigInteger.probablePrime(int bitLength, Random rnd) 返回一个随机的素数。

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

   3、可以返回其子类,在选择返回对象的类时有了更大的灵活性。

   4、简化代码。

   缺点:

   1、整个类如果没有public 或 protected类型的构造器,则它将不能被继承,即不能作为超类,相当于final。

   2、与其他静态方法在api文档中没有区别,不像构造器在api中可以标识出来

静态工厂方法惯用名称:

  •     valueOf —— 返回的实例与其参数具有相同的值,实际上是一种类型转换方法
  •     of —— valueOf简洁的替代,EnumSet中有使用
  •     getInstance
  •     newInstance ——同getInstance,保证每个返回的实例都与其他实例不同
  •     getType —— Type表示工厂方法所返回的对象类型
  •     newType
原文地址:https://www.cnblogs.com/zoujiejun96/p/8778304.html