完美的单例模式
来源:互联网 发布:mac找不到安装器光盘 编辑:程序博客网 时间:2024/06/13 23:45
一、立即加载模式(饿汉模式)
/** * 立即加载模式(饿汉模式) * * @author LZN * */public class SingleOne {private static SingleOne singleOne = new SingleOne();private SingleOne() {// TODO Auto-generated constructor stub}/** * 该方法保证在多线程中获取的是同一个对象 * 该方法缺点是不能有其他实例变量,因为getInstance()不是同步方法,会引起线程安全问题 * * @return */public static SingleOne getInstance() {return singleOne;}}
二、延迟加载模式(懒汉模式)
/** * 延迟加载模式(懒汉模式) * * @author LZN * */public class SingleOne {// 懒汉模式(DCL双检查锁机制)private volatile static SingleOne singleOneDCL = null;private SingleOne() {// TODO Auto-generated constructor stub}/** * 采用DCL双检查锁机制,保证在多线程中获取的是同一个对象 * * @return */public static SingleOne getInstance() {if (singleOneDCL == null) {// 在此处处理一些准备工作synchronized (SingleOne.class) {if (singleOneDCL == null) {singleOneDCL = new SingleOne();}}}return singleOneDCL;}}
三、静态内置类实现单例模式
/** * 静态内置类实现单例模式 * * @author LZN * */public class SingleOne {private static class MyObjectHandler {private static SingleOne singleOne = new SingleOne();}private SingleOne() {// TODO Auto-generated constructor stub}/** * * @return */public static SingleOne getInstance() {return MyObjectHandler.singleOne;}}
四、利用静态初始化器实现单例模式
/** * 利用静态初始化器实现单例模式 * * @author LZN * */public class SingleOne {private static SingleOne singleOne;static {singleOne = new SingleOne();}private SingleOne() {// TODO Auto-generated constructor stub}/** * * @return */public static SingleOne getInstance() {return singleOne;}}
五、使用enum枚举实现单例模式
/** * 使用enum枚举实现单例模式 * * @author LZN * */public class SingleOne {public enum MyEnumSingle {objectHandler;private SingleOne singleOne;private MyEnumSingle() {// TODO Auto-generated constructor stubSystem.out.println("SingleOne.MyEnumSingle.MyEnumSingle()");singleOne = new SingleOne();}public SingleOne getInstance() {return singleOne;}}private SingleOne() {// TODO Auto-generated constructor stub}/** * * @return */public static SingleOne getInstance() {return MyEnumSingle.objectHandler.getInstance();}}
0 0
- 完美的单例模式
- 完美的单例模式
- java 完美的单例模式
- 完美的单例模式(The Perfect Singleton)
- ios下比较完美的单例模式
- 怎么写一个“完美”的单例模式
- c++完美实现单例模式
- 传说中的完美单例模式
- Java单例模式——暂时完美的单例
- API开发第三篇:PHP的设计模式之完美的单例模式
- java单例模式详解完美实现(包括反射破坏的防止和线程安全)
- 目前认为最完美的单例
- C++单例的完美实现
- c++11 单例模式可变参数实现完美转发
- 完美单例
- Android设计模式(一)--完美单例模式
- 设计模式 单例模式 优雅的单例模式
- 单例模式的同步
- mysql的优化
- 安装VNC桌面
- 第2周项目3-体验复杂度(2)汉诺塔
- JZOJ4760. 同桌的你
- MATLAB入门教程
- 完美的单例模式
- java.lang.ArrayIndexOutOfBoundsException
- 哈希 hash
- 求数组中唯一重复的元素
- 转载内容对SEO优化是利是弊?看完就懂
- yum 变量追加的方法
- 项目3 - 体验复杂度(1)
- C++简单排序算法之选择排序
- datatables -3