编程语言
首页 > 编程语言> > EffectiveJava 1创建和销毁对象 1考虑用静态工厂方法代替构造器

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