C#设计模式(1)=>单例模式

        什么是单例模式:保证一个类只能有一个实例对象存在,并提供一个全局的访问点;

        应用环境:只需要一个对象,一个实例的时候

        例如:WinForm只能创建一个窗体的时候;只需要一个实例对象的时候

        代码:

      

 public class Singleton

{

//通过静态的私有变量来判定是否类的实例化是否唯一

private static Singleton myInstancd;

 

private Singleton()

{

 

}

 

//定义全局的方法提供类的外部访问

public static Singleton GetInstance()

{

//如果为空则实例化对象,否则返回该对象

if(myInstancd==null)

{

myInstancd = new Singleton();

}

return myInstancd;

}

} 

 

 

 

 

缺点:在多线程的时候两条线程同时访问会都为空,会创建多个实例

解决办法:加锁

 

public class Singleton

{

//通过静态的私有变量来判定是否类的实例化是否唯一

private static Singleton myInstancd;

//判定是否加锁保证线程同步

private static readonly object myLock = new object();

private Singleton()

{

 

}

 

//定义全局的方法提供类的外部访问

public static Singleton GetInstance()

{

//lock加锁的时候线程会挂起,不会出现多个实例对象

lock (myLock)

{

//如果为空则实例化对象,否则返回该对象

if (myInstancd == null)

{

myInstancd = new Singleton();

}

}

return myInstancd;

}

} 

参考

 

C#设计模式(1)=>单例模式

上一篇:C# 判断操作系统的位数


下一篇:.net c# 提交包括文件file 的form表单 获得文件的Stream流