单例模式
来源:互联网 发布:数据的收集与整理 编辑:程序博客网 时间:2024/06/06 06:47
定义:
一个类中只有一个实例,为所有需要访问此类的提供唯一一个全局的实例。
应用场景:
整个系统中只有一个实例,需要有二个以上的不适用。对应全局常量变量和数据库的连接不适用使用单例
优点:
防止不同的对象对类进行实例化
缺点:
没有销毁实例对应的解决方式。
具体的代码如下:
懒汉模式,这个在多线程下保证了只要一个实例的情况。当两个线程同是进入_instanced==null代码中,首先访问到lock(lockCreate)会锁住当前的lockCreate实例,使得下个线程等待其执行完成创建了实体才可进入,保证了此线程外的其他线程通过_instance==null判断为false,从而不会重复创建线程。第一次调用CreateInstance方法创建实例,后面访问的就直接调用而无需创建实例。
public class Singleton{ private volatile static Singleton _instance = null; private static readonly object lockCreate = new object(); private Singleton(){} public static Singleton CreateInstance() { if(_instance == null) { lock(<span style="font-family: Arial, Helvetica, sans-serif;">lockCreate</span><span style="font-family: Arial, Helvetica, sans-serif;">)</span> { if(_instance == null) _instance = new Singleton(); } } return _instance; }}
饿汉模式,这个是在静态构造函数中就初始化创建,在C#的CRL中内置解决了并发性的问题,访问加载这个类是就实例化单例类。
public sealed class Singleton{ private static readonly Singleton instance=new Singleton(); public static Singleton GetInstance() { return instance; }}
0 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- 五大常用算法之五:分支限界法
- 零星小记备忘,浏览器差异
- JAVA实现字符表达式的计算的实现(一)--逆波兰式的实现
- AutoLayout——何为intrinsic content size
- VMWare中CentOS 6.5_x64迷你版安装(NAT方式)
- 单例模式
- codeforces_600A. Extract Numbers(字符串处理)
- 第二次上机作业
- 普通java类(排序)实现Comparable接口重写CompareTo方法
- 5.Servlet生成多位随机的验证码
- Linux内核协议栈(11)路由系统
- oracle中的char、varchar、varchar2、nvarchar、nvarchar2区别
- 构造MaxTree
- 【转】使用typedef定义函数指针