博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式-单例模式
阅读量:4163 次
发布时间:2019-05-26

本文共 1189 字,大约阅读时间需要 3 分钟。

文章目录

介绍

单例模式可以确保在程序运行期间,只有一个对象实例

立即加载/饿汉模式

使用类的时候已经将对象创建完毕,常见的实现办法就是new实例化。从中文语境来说,有着急、急迫的意思,所以也称为饿汉模式

定义方式一:

public class Singleton {
private final static Singleton INSTANCE = new Singleton(); private Singleton(){
} public static Singleton getInstance(){
return INSTANCE; }}

定义方式二:

public class Singleton {
private static Singleton instance; static {
instance = new Singleton(); } private Singleton() {
} public static Singleton getInstance() {
return instance; }}

延迟加载/懒汉模式

在调用get()方法时实例才被创建,常见的实现办法是在get()方法中进行new实例化。从中文语境来说,是缓慢、不急迫的意思,所以也称为懒汉模式

定义方式一(双重检查):

public class Singleton {
//保证线程可见性 private static volatile Singleton singleton; private Singleton() {
} //双重检查 public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton(); } } } return singleton; }}

定义方式二(静态内部类):

public class Singleton {
private Singleton() {
} private static class SingletonInstance {
private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() {
return SingletonInstance.INSTANCE; }}

转载地址:http://awpxi.baihongyu.com/

你可能感兴趣的文章
java中的异常机制
查看>>
java SE面向对象思维导图
查看>>
三维分析之视频投放
查看>>
SuperMap iDesktop之栅格值怎么查
查看>>
SuperMap iClient3D for WebGL教程-orientation
查看>>
SuperMap iClient3D for WebGL教程-description描述属性
查看>>
SuperMap iClient3D for WebGL教程-CallbackProperty
查看>>
如何修改leaflet聚合图的层级和样式
查看>>
三维分析之开敞度分析
查看>>
BIM+GIS应用的八大挑战
查看>>
.net实现.aspx页面自动加载.cs程序定义的变量并按照格式输出
查看>>
Spark总结整理(八):Spark Core 性能优化思路、步骤总结
查看>>
实时组件(SparkStreaming VS Flink)容错及语义说明
查看>>
浏览器地址栏输入URL,按下回车后发生了什么
查看>>
linux常用命令
查看>>
网络请求返回HTTP状态码
查看>>
autojs 图片查找比对
查看>>
css 自定义滚动条样式
查看>>
auto js 线程测试
查看>>
ie9走过的坑
查看>>