首页 > Windows开发 > 详细

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

时间:2014-11-17 19:05:13      阅读:200      评论:0      收藏:0      [点我收藏+]

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

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

        例如: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)=>单例模式

原文:http://www.cnblogs.com/fucker/p/4104061.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!