EffectiveJava 1创建和销毁对象 1考虑用静态工厂方法代替构造器

2022/2/9 9:16:07

本文主要是介绍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  静态工厂方法与构造器相比的缺点



这篇关于EffectiveJava 1创建和销毁对象 1考虑用静态工厂方法代替构造器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程