Singleton实现
来源:互联网 发布:局域网进销存软件 编辑:程序博客网 时间:2024/05/17 03:13
单例模式的实现大致有以下几种方式:
饿汉式:
/** * @desc: 饿汉式,类加载时即创建实例 * @desc: feature:可以通过反射机制攻击;线程安全(多个类加载器除外) * @author: houkh * @date: Dec 2, 2014 */public class HungrySingletonOfBasic { public static final HungrySingletonOfBasicinstance = new HungrySingletonOfBasic(); private HungrySingletonOfBasic() { }}
饿汉式变种1:
/** * @desc:饿汉式变种 * @author: houkh * @date: Dec 2, 2014 */public class HungrySingletonTwo { private static HungrySingletonTwo instance = new HungrySingletonTwo(); public static HungrySingletonTwo getInstance() { return instance ; } private HungrySingletonTwo() { }}
饿汉式变种2:
/** * @desc: 饿汉式变种2,类加载时实例化 * @deprecated something may be wrong * @author: houkh * @date: Dec 2, 2014 */public class HungrySingletonThree { private static HungrySingletonThree instance = null; static { instance = new HungrySingletonThree(); } private HungrySingletonThree() { } public static HungrySingletonThreegetInstance() { return instance ; }}
懒汉式:
/** * @desc: 懒汉式,基本类型 * @desc: feature:延时加载;线程不安全,多线程下不能正常工作;需要额外的serializable/transient/readResolve来实现序列化 * @author: houkh * @date: Dec 2, 2014 */public class LazySingletonOfBasic { private static LazySingletonOfBasic instance = null ; private LazySingletonOfBasic() { } public static LazySingletonOfBasic getInstance() { if (instance == null) { instance = newLazySingletonOfBasic(); } return instance ; }}
懒汉式变种:
/** * @desc: 线程安全,效率较低 * @author: houkh * @date: Dec 2, 2014 */public class LazySingletonTwo { private static LazySingletonTwo instance =null ; private LazySingletonTwo() { } public static synchronized LazySingletonTwo getInstance() { if (instance == null) { instance = newLazySingletonTwo(); } return instance ; }}
静态内部类:
/** * @desc: 静态内部类:线程安全,延迟加载 * @author: houkh * @date: Dec 2, 2014 */public class InnerStaticSingleton { private static class SingletonHolder { private static final InnerStaticSingleton instance = newInnerStaticSingleton(); } public static final InnerStaticSingletongetInstance() { return SingletonHolder. instance; } private InnerStaticSingleton() { }}
双重校验锁:
/** * @desc:双重校验 * @author: houkh * @date: Dec 2, 2014 */public class DoubleCheckSingleton { private volatile static DoubleCheckSingleton instance; private DoubleCheckSingleton() { } public static DoubleCheckSingleton getInstance() { if (instance == null) { synchronized(DoubleCheckSingleton. class) { if (instance == null) { instance = newDoubleCheckSingleton(); } } } return instance ; }}
枚举类型:
/** * @desc: 提供序列化机制,绝对防止多次实例化,即使在面对复杂序列化或反射攻击的时候 * @author: houkh * @date: Dec 2, 2014 */public enum EnumSingleton { instance ;}
0 0
- Singleton实现
- 实现Singleton
- Singleton实现
- Singleton实现
- C++ 中的 Singleton 实现
- C#实现Singleton
- Delphi实现Singleton模式
- C++实现Singleton
- C#实现Singleton
- Singleton的安全实现!
- c#实现singleton
- C#实现Singleton
- Singleton的各种实现
- C++ 中的 Singleton 实现
- Singleton五种实现
- Singleton模式实现分析
- C++ Singleton实现
- 实现Singleton模式
- 天声人語 20141202
- 排序
- 用bypass_ujvc改驱动表
- iOS:键盘回车键
- 黑马程序员————交通灯管理系统
- Singleton实现
- 可编辑ztree节点的增删改功能图标控制
- Mybatis中sql语句中的in查询,一定要判断null的情况
- json 415 unsupported media type
- C语言字符串
- Oracle Java BUG回避策略1
- delphi 二代身份证阅读器开发 SDT_ReadBaseMsg函数
- namenode 加内存的操作实践
- SQL Server 2008 导出脚本及数据方法