《Java设计模式及实践》—2.1.4 提前加载和延迟加载
【摘要】 本节书摘来自华章计算机《Java设计模式及实践》一书中的第2章,第2.1.4节,[印度] 卡马尔米特·辛格(Kamalmeet Singh)[荷兰] 艾德里安·伊恩库列斯库(Adrian Ianculescu) 著[罗马尼亚] 路西安-保罗·托尔耶(Lucian-Paul Torje) 张小坤 黄 凯 贺 涛 译.
2.1.4 提前加载和延迟加载
按照实例对象被创建的时机,可以将单例模式分为两类。如果在应用开始时创建单例实例,就称作提前加载单例模式;如果在getInstance方法首次被调用时才调用单例构造器,则称作延迟加载单例模式。
前面例子中描述的无锁线程安全单例模式在早期版本的Java中被认为是提前加载单例模式,但在最新版本的Java中,类只有在使用时候才会被加载,所以它也是一种延迟加载模式。另外,类加载的时机主要取决于JVM的实现机制,因而版本之间会有不同。所以进行设计时,要避免与JVM的实现机制进行绑定。
目前,Java语言并没有提供一种创建提前加载单例模式的可靠选项。如果确实需要提前实例化,可以在程序的开始通过调用getInstance方法强制执行,如下面代码所示:
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)