Effective Java

考虑用静态工厂方法代替构造器(Effective Java )

2017-06-08  本文已影响0人  yht_humble
优点:

1.静态工厂方法有名称(使代码更加容易阅读)。
例:
BigInteger.probablePrime(int, Random).
2.不必再每次调用的时候都创建一个新对象。
例:

public static Boolean valueOf(boolean flag)
    {
        return flag ? TRUE : FALSE;
    }
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);

3.可以返回原返回类型的任何子类型的对象。

4.创建参数化类实例的时候,是代码变得更加简洁。
例:类型推导

Map<String, List<String>> m = new HashMap<String, List<String>>();//未使用静态工厂方法
  public static <K, V> HashMap<K, V> newInstance() {
    return new HashMap<K, V>();
}
Map<String, List<String>> m = HashMap.newInstance(); //使用静态工厂方法,代码简洁许多。

缺点:

  1. 类如果不含公有的或者受保护的构造器,就不能被子类化。
    类A继承类B时,类B必须提供非私有可用的构造器。
  2. 与其他静态方法实际上没有什么区别。
上一篇 下一篇

猜你喜欢

热点阅读