01 Singleton

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DesignPatternsAgain.Creational
{
    
public class Singleton
    {
        
private Singleton() { }
        
private static Singleton _singleton = null;
        
private static object obj = new object();

        
public static Singleton GetInstance() {
            
if (_singleton == null) {
                
lock (obj)
                {
                    
if (_singleton != null) {       //double check
                        _singleton = new Singleton();
                    }
                }
            }
            
return _singleton;
        }

    }
}

Client :

        static void Main(string[] args)
        {
            Singleton sgl1 
= Singleton.GetInstance();
            Singleton sgl2 
= Singleton.GetInstance();
            
bool b = object.ReferenceEquals(sgl1, sgl2);
            Console.WriteLine(b.ToString());
            Console.ReadKey();
        }

 

 http://msdn.microsoft.com/en-us/library/ms998558.aspx

using System;

public sealed class Singleton
{
   private static volatile Singleton instance;
   private static object syncRoot = new Object();

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null) 
         {
            lock (syncRoot) 
            {
               if (instance == null) 
                  instance = new Singleton();
            }
         }

         return instance;
      }
   }
}

 

posted @ 2010-07-05 23:26  庚武  Views(217)  Comments(0)    收藏  举报