码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2014-11-17 19:08:24      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:winform   style   blog   http   color   sp   for   div   on   

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

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

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

标签:winform   style   blog   http   color   sp   for   div   on   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!