0005JDK源码分析之静态工厂方法使用
Posted Java框架源码分析
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0005JDK源码分析之静态工厂方法使用相关的知识,希望对你有一定的参考价值。
本文将介绍java.lang包下的Boolean类,以及其使用的静态工厂方法。
本文大纲:
一、Boolean类介绍
二、何为静态工厂方法?
三、静态工厂方法的优缺点
四、静态工厂方法的应用案例
一、Boolean类介绍
Boolean类是原生boolean类型的包装类。Boolean类提供了很多便利的操作布尔值的方法,其中包括静态工厂方法创建实例。下图是Boolean类对外开放的API,图标解释:F-final,S-static,C-constructor。在Eclipse IDE里面打开Boolean类源码,按F4就可以看到这个结构图。
二、何为静态工厂方法?
创建实例有两种常用方式,一种是通过构造器,另一种是通过静态工厂方法。静态工厂方法大概是这种形式:public static 实例类型 方法名(参数)。比如Boolean中的静态工厂有valueOf()方法,代码如下:
Boolean类中缓存了两个实例,一个是TRUE,另一个是FALSE。当使用valueOf静态工厂方法创建实例时,返回的都是这两个实例之一,节省了空间与资源。如果是使用构造器,则会创建不同的对象实例,相对消耗更多的资源。这也是使用静态工厂方法的一个好处之一,可以使用缓存的对象实例,减少频繁创建对象。
三、静态工厂方法的优缺点
为了更准确的描述静态工厂方法的优缺点,引用《Effective Java》一书的定义,该书包含了很多实用编程技巧。
优点:
1、静态工厂方法与构造器不同的第一大优势在于,它们有名称。构造器是通过参数来判断构造了具有什么属性和行为的对象,而工厂方法则可以通过方法名来判断,更加易于阅读。
2、静态工厂方法与构造器不同的第二大优势在于,不必在每次调用它们的时候都创建一个新对象。Boolean的valueOf方法返回的就是缓存对象,不用重复创建对象。
3、静态工厂方法与构造器不同的第三大优势在于,可以返回原返回类型的子类型的任意对象。如此一来,在创建对象时提供了更多的便利性。
4、静态工厂方法的第四大优势在于,在创建参数化类型实例的时候,更加简洁。
缺点:
1、与其他的静态方法没有区别,不能明显知道哪些是创建实例的静态工厂方法,需要查看API。但是一般静态的工厂方法都遵守一定命名规则,如:getInstance,newInstance,newType,getType,create等。
2、类如果不含有共有的或受保护的构造器,不能被实例化。
四、静态工厂方法的应用案例
Boolean类的实现,是一个很好的案例。其次,我也提供一个案例,代码如下:
五、总结
本文以Boolean为入口引出静态工厂方法,描述了静态工厂方法的优缺点,同时也提供了两个案例,一个是JDK中的Boolean类,一个是本人写的小案例。前者应用了静态工厂方法的第二个优势,后者应用了静态工厂方法的第三个优势。
以上是关于0005JDK源码分析之静态工厂方法使用的主要内容,如果未能解决你的问题,请参考以下文章