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的规范。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值