专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 编程

java高效率编程之静态工厂方法代替构造函数

发布时间:2011-07-01 07:26:10 文章来源:www.iduyao.cn 采编人员:星星草
java高效编程之静态工厂方法代替构造函数

 

一般为了获得一个类的实例,我们最常用的方法就是提供一个或多个公有的构造函数,这个大家都理解,但是实际上还有另一种 创建对象的方法:静态工厂方法
比如java中为Boolean 类提供了如下静态工厂方法代替构造函数:
public static Boolean valueOf(boolean b){
     return (b?Boolean.True:Boolean.FALSE);
}
使用Boolean.valueOf()方法就可以直接使用了
那么, new Boolean(aval).booleanValue() 和Boolean.valueOf(aval).booleanValue() 有什么区别?
它们之间差别在于new Boolean开辟了新的内存空间。从程序开发,内存角度来讲,推荐直接用静态方法(第二种),最起码省内存呢。

用静态工厂方法代替公有的构造函数,是有好处,但也有他的不足之处.

1、静态工厂方法的一个好处是,和构造函数不同,静态工厂方法具有名字。因为可以向外部调用时,由静态方法名可以知道方法的用途。如果只用构造函数,你可能永远也记不住该用哪个构造函数,结果常常会调用错误的构造函数上,不可知道构造函数的作用。,除非去看类的文档说明。
2、静态工厂方法的第二个好处是,与构造函数不同,它们每次被调用的时个,不要求非创建一个新的对象。比如上面的Boolean.valueOf()方法。如果一个程序频繁地创建对象,并且创建对象的代价很昂贵,用静态工厂方法可以极大的提高性能。单例模式就用了静态工厂方法。
3、静态工厂方法的每三个好处是,与构造函数不同,它们可以返回一个原返回类型的子类的对象

4、静态工厂方法的主要缺点是。类如果没有公有的或都受保护的构造函数,就不能被了类化。如果类中为了不让被实例化,只提供私有构造函数,那么此类不可继承。不过这既是缺点也是优点吧!呵呵
4、静态工厂方法的第二个缺点是,它们与其他的静态方法没有区别。类中有用于生成类的实例的静态工厂方法,也要其他功能的普通静态方法,因为在使用时可能会区分不了那个是静态工厂方法。这就要注意命名规范,使用调用者看名知意。将缺点减少到最小影响。 比如我经常用名到getInstance方法表示返回一个唯一的实例。


静态工厂方法和公有构造函数都有各自的用途。用哪个要看实际情况,如果没有其他因素影响你的选择,那么你最好还是老老实实的使用构造函数,毕竟它是java的规范。



友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: