java中getInstance()和newInstance()的区别?
摘一段《Effective Java》的代码,英文版第10页:
getInstance-Returns an instance that is described by the parameters but cannot be said to have the same http://value.In the case of a singleton,getInstance takes no parameters and returns the sole instance.
newInstance-Like getInstance,except that newInstance guarantees that each instance returned is distinct the from all others.
疑惑的是我看到的newInstance大都在单例中使用,对distinct the from all others不理解,我一直以为getInstance和newInstance都是在单例中使用,只是命名习惯不同而已,效果相同。照这里的意思,在这两个命名习惯上会区别对待?
我理解,getInstance是单例模式里获取单例的方法名称,你可以随意改。newInstance是java.lang.Class里的方法名,会调用构造方法构造新的实例。
事实上,getInstance如果不传入参数,通常是我们在单例模式中使用的方式,如果传入参数,则对应多例模式。
而newInstance,每次都会构造新的实例,你疑问的 distinct the from all others
指定是通过newInstance接口,每次返回的object的reference必须是不同的,因此,它返回的就是新的实例。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。