EffectiveJava 1创建和销毁对象 1考虑用静态工厂方法代替构造器
作者:互联网
1 内容
1.0 静态工厂方法定义
Fragment fragment = new MyFragment(); // or Date date = new Date(); 然而实际中是这样: Fragment fragment = MyFragment.newIntance(); // or Calendar calendar = Calendar.getInstance(); // or Integer number = Integer.valueOf("3"); 像上面这样的:不通过 new,而是用一个静态方法来对外提供自身实例的方法,即为我们所说的静态工厂方法。
参考:https://blog.csdn.net/weixin_44148815/article/details/87653744
1.1 静态工厂方法与构造器相比的优点
- 静态工厂方法有名称,便于阅读
如BigInteger的判断质数的方法,通过名称可能为质数,方便理解
public static BigInteger probablePrime(int var0, Random var1) { if (var0 < 2) { throw new ArithmeticException("bitLength < 2"); } else { return var0 < 95 ? smallPrime(var0, 100, var1) : largePrime(var0, 100, var1); } }
- 不必再每次调用它们的时候都创建一个新的对象,节省了开销
- 静态工厂方法可以返回原类型的任何子类型的对象
如下:java.util.Collections 有如下方法
public static <T> ArrayList<T> list(Enumeration<T> var0) { ArrayList var1 = new ArrayList(); while(var0.hasMoreElements()) { var1.add(var0.nextElement()); } return var1; } public static <T> Set<T> unmodifiableSet(Set<? extends T> var0) { return new Collections.UnmodifiableSet(var0); }
上边代码直接从源码拿到,最好参考右侧网址,便于理解:https://blog.csdn.net/u014519120/article/details/78741481
1.2 静态工厂方法与构造器相比的缺点
标签:销毁,var1,var0,静态,工厂,EffectiveJava,new,方法 来源: https://www.cnblogs.com/1446358788-qq/p/15873540.html