Effective Java笔记- 第一条考虑用静态工厂方法代替构造器

一般获取一个类的实例的方法通常是使用该类的构造方法。除此之外我们还可以给一个类定义一个公有的静态工厂方法,这个方法只返回类的实例静态方法。
例子:

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

通过这种方法的优势

1.静态工厂方法与构造器方法的第一个大优势在于静态工厂方法有名称

一个类往往有多个重载的构造方法,参数列表只在参数类型或者个数上不一样,在别人使用的时候很难记住用哪个构造器。

由于静态工厂方法有名称,所以不存在上面的问题。当一个类有重载的构造方法的时候可以考虑用静态工厂方法替代。在给静态工厂方法取名的时候尽可能的表述这个方法的含义。

例子:

//产生素数
 public static BigInteger probablePrime(int bitLength, Random rnd)

2.静态工厂方法与构造器不同的第二大优势在于,不必要每次调用它们的时候都创建一个新对象。

不变的类可以使用预先构建好的实例,或者将构建好的实例缓存起来,进行重复利用,从而避免不必要的重复对象。

例子:


  public final class Boolean implements java.io.Serializable,
                                      Comparable {
    public static final Boolean TRUE = new Boolean(true);

    public static final Boolean FALSE = new Boolean(false);

    ......省略......

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

你可能感兴趣的:(Effective Java笔记- 第一条考虑用静态工厂方法代替构造器)