首页 > 代码库 > C#设计模式(1)=>单例模式

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