单例设计模式(singleton)
来源:互联网 发布:检查语法错误的软件 编辑:程序博客网 时间:2024/05/18 03:03
单例设计模式的概念
作为对象创建模式,档里模式确保某个类只有一个实例对象,而且自行创建实例并向整个系统提供这个实例。这个类称为单例类!
单例模式的提点
1,单例类只能有一个实例
2,单例类的唯一实例必须自己创建
3,单例类必须向系统提供这个唯一的实例
饿汉单例类
public class EagerSingleton { //在类加载创建实例 private static EagerSingleton mSingleton=new EagerSingleton(); //私有构造方法 private EagerSingleton(){} //静态工厂方法 public static EagerSingleton getInstance(){ return mSingleton; }}
饿汉单例模式是典型的以空间换时间,在类加载时就创建出来,不管你用不用。在随后的工厂方法中就不需要做判断,节省了运行的时间。
懒汉单例类
public class LazySingleton { private static LazySingleton instance; private LazySingleton(){} public static LazySingleton getInstance(){ //双重检查枷锁 if(instance == null){ synchronized (LazySingleton.class) { if(instance ==null){ instance = new LazySingleton(); } } } return instance; }}
懒汉单例模式是典型的时间换空间,每次获取实例都会进行判断,是否需要创建实例,浪费判断的时间。当然如果一直没有调用此方法,则实例不会创建,节省空间。
添加一个持有单例实例的类内部类对象方法
啰嗦几个小知识点:1,类内部类是有static修饰的成员内部类。
2,类级内部类相当于外部类的static成分,不存依赖关系。
3,类级内部类相当于外部类的成员变量,只有在第一次使用时才会被加载。
public class SingletonWithHolder { private static class SingletonHolder{ private static SingletonWithHolder instance = new SingletonWithHolder(); } public static SingletonWithHolder getInstance(){ return SingletonHolder.instance; }}
当客户端第一次调用getInstance()时,SingletonHolder.instance第一次被读取,导致SingleHolder初始化,会在静态域创建SingleWithHolder实例。虚拟机只会
加载静态域一次,虚拟机保证了它的线程安全。此方法延迟初始化,并没有增加任何成本!
枚举单例
单元素的枚举类型已经成为实现singleton的最佳方法。
public enum EmunSingleton { /** * 定义一个枚举元素,它就代表这Singleton的一个实例 */ uiqueSingleton; /** * 单例的操作方法 */ public void singleOperation(){ }}
0 0
- 设计模式---单例模式(singleton)
- 设计模式--单例模式(Singleton)
- 设计模式--单例模式(Singleton)
- 设计模式-单例模式(Singleton)
- 【设计模式】-单例模式(Singleton)
- 设计模式---单例模式(singleton)
- 设计模式 -- 单例模式(Singleton)
- 设计模式:单例模式(Singleton)
- 设计模式:单例模式(Singleton)
- 设计模式:单例模式(Singleton)
- 设计模式:单例模式(Singleton)
- 设计模式:单例模式(Singleton)
- 设计模式-单例模式(Singleton)
- 【设计模式】单例模式(Singleton)
- 设计模式-单例(Singleton)模式
- 设计模式--单例模式(Singleton)
- 设计模式----单例模式(singleton)
- 设计模式----Singleton(单例)
- 使用PropertyGrid是出现无法找到System.String上的构造函数的解决方法
- 在用例图中如何区分include和extends?
- 徐小明:周五操作策略
- 转载:天涯——散文天下——《男人的进化过程》——作者:南方孤驴
- 一个文件操作的简单程序:关于文件的fopen、fread、fseek、ftell、fclose等操作(FIFO related)
- 单例设计模式(singleton)
- C++中const用法总结
- 知识精华部分
- 5分钟带你全方位看完Apple新品们!
- 写在工作满1年后
- PHP程序员的技术成长规划
- CSS浮动
- 从贝叶斯方法谈到贝叶斯网络
- mysql自动备份