设计模式之单例模式
来源:互联网 发布:python 安装xpath 编辑:程序博客网 时间:2024/06/05 02:08
设计模式之单例模式
单例模式的用途
单例模式保证了系统中某个类只有一个实例,而且自行实例化并向整个系统提供自己。在计算机系统中,线程池、日志对象、缓存、对话框、打印机等都被设计成单例。spring默认也是单例模式,单例模式一方面可以控制实例产生的数量,提高垃圾回收的效率,另一方面也可以作为通信的媒介,使不同线程实现通信。
单例模式的写法:
关键是用private关键字修饰构造函数,使程序中不能通过new的方法创建对象。然后用懒汉模式或者饿汉模式来实现单例模式。
/** * * @author admin * 懒汉模式,在第一次调用时创建实例 * 存在线程安全问题 */public class Singleton1 { private Singleton1(){} private static Singleton1 instance = null; public static Singleton1 getInstance(){ if(instance == null){ instance = new Singleton1(); } return instance; }}
/** * * @author admin * 懒汉模式,在第一次调用时创建实例 * 线程安全,性能不好 */public class Singleton2 { private Singleton2(){} private static Singleton2 instance = null; public static Singleton2 getInstance(){ if(instance == null){ synchronized (Singleton2.class) { if(instance == null){ instance = new Singleton2(); } } } return instance; }}
/** * * @author admin * 饿汉模式,在类加载时创建实例 * 线程安全,建议使用 */public class Singleton3 { private Singleton3(){} private static Singleton3 instance = new Singleton3(); public static Singleton3 getInstance(){ return instance; }}
/** * * @author admin * 静态内部类,在调用时创建实例 * 线程安全,建议使用 */public class Singleton4 { private Singleton4(){} private static class SingletonHolder{ private static Singleton4 instance = new Singleton4(); } public static Singleton4 getInstance(){ return SingletonHolder.instance; }}
0 0
- 设计模式之 单例设计模式
- 设计模式之 单例设计模式
- 设计模式之单例设计模式
- 设计模式之-----------单例设计模式
- 设计模式之:单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之单例设计模式
- 设计模式之-单例设计模式
- 设计模式之单例设计模式 标签: 设计模式
- 设计模式之单例
- 设计模式之单例
- 设计模式之 单例
- theano学习入门和进阶系列2: MLP示例
- python之collections模块Counter类使用学习
- Byte[]和BASE64之间的转换
- 软考学习笔记
- 跟小博老师一起学习数据库 ——索引
- 设计模式之单例模式
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- 简易进制转换器
- python——函数——高阶函数
- 多态中的转型
- Problem B: STL——管道一
- POJ NOI0113-03 八进制小数(Bailian2765)
- 复习2
- [Visio 2007]解决 “类图”调整宽度后,换行的文字溢出的问题(如何调整“类图”的高度?)