设计模式-单例模式(Java实现)
来源:互联网 发布:sqlmap写入webshell 编辑:程序博客网 时间:2024/06/13 21:27
1. 摘要
单例模式可以保证系统中一个类只有一个实例,即一个类只有一个对象实例[1]。本文主要參考了《单利模式的七种写法》博客[2]。
2. 单例模式的分类
单例模式主要分为4种方式:
2.1 饿汉模式(由Early音译过来,具体含义为使用之前,已完成初始化)
2.2 懒汉模式(由Lazy音译过来,具体含义为使用之时,才进行初始化)
2.2.1 非线程安全
2.2.2 直接同步
2.2.3 双重校验锁
2.3 静态内部类模式(利用了classloader的机制来保证初始化instance时,只有一个线程)
2.4 枚举模式(《Effective Java》作者Josh Bloch提倡的方式,不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象)
3. 单例模式的Java实现
3.1 饿汉模式
public class Singleton { private static Singleton instance = new Singleton(); private Singleton(){ } public static Singleton getInstance() { return instance; }}
3.2 懒汉模式(非线程安全)
public class Singleton { private static Singleton instance; private Singleton(){ } public static Singleton getInstance() { if (instance==null) { instance = new Singleton(); } return instance; }}
3.3 懒汉模式(直接同步)
public class Singleton { private static Singleton instance; private Singleton(){ } public static synchronized Singleton getInstance() { if (instance==null) { instance = new Singleton(); } return instance; }}
3.4 懒汉模式(双重校验锁)
public class Singleton { private static Singleton instance; private Singleton(){ } public static Singleton getInstance() { if (instance==null) { synchronized (Singleton.class) { if (instance==null) { instance = new Singleton(); } } } return instance; }}
3.5 静态内部类模式
public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton(){ } public static Singleton getInstance() { return SingletonHolder.INSTANCE; }}
3.6 枚举模式
public enum Singleton { INSTANCE;}
4. 引用
[1] 单例模式_百度百科
[2] 单利模式的七种写法
阅读全文
0 0
- 设计模式--单例模式-Java实现
- 设计模式--单例模式--Java实现
- 设计模式-Java实现单例模式
- 设计模式(一):单例模式 java实现
- 设计模式-单例模式(Java实现)
- 设计模式--单例模式(JAVA语言实现)
- java设计模式(单例模式)
- JAVA设计模式(单例模式)
- 设计模式----单例模式(java)
- (设计模式)单例模式-java
- java 实现设计模式之单例模式(饱汉模式和饿汉模式)
- java单例设计模式的实现
- JAVA实现单例设计模式
- 设计模式——单例(Java实现)
- 笔试Java实现单例设计模式(最优方案)
- 设计模式之—单例模式(Singleton)-Java实现
- Java设计模式---单例模式的实现
- 设计模式之—单例模式(Singleton)-Java实现
- Python 旅程开启
- IQKeyboardManager
- 【NOIP2013模拟11.4A组】善良的精灵
- 数论
- [记录]Android SystemServer
- 设计模式-单例模式(Java实现)
- NKOJ-1893 路径方案数
- xmlHttpRequest详解
- f-droid.org|开源Android
- CSS之表单的样式
- AJAX原生写法
- linux内存管理之内存回收机制
- HTML+CSS编写静态网站-37 媒体查询初探
- 使用注解实现AOP