线程安全的Singleton模板

今天看了umbraco 的源代码, 发现了这个非常漂亮的Singleton模板
惟一的不足是, 构造函数是public, 只能靠开发人员自己控制了.

/// <summary>
    
/// 
    
/// Threadsafe Singleton best practice design pattern template
    
/// 
    
/// Sample:
    
/// 
    
/// public class Demo
    
/// {
    
///        public static Form1 instance1
    
///        {
    
///            get
    
///            {
    
///                return Singleton<Form1>.Instance;
    
///            }
    
///        }
    
///    }
    
/// </summary>
    
/// <typeparam name="T">Any class that implements default constructor</typeparam>
    public sealed class Singleton<T> where T : new()
    {
        
private Singleton()
        {
        }

        
public static T Instance
        {
            
get { return Nested.instance; }
        }

        
private class Nested
        {
            
// Explicit static constructor to tell C# compiler
            
// not to mark type as beforefieldinit
            static Nested()
            {
            }

            
internal static readonly T instance = new T();
        }
    }
posted @ 2007-08-07 16:41  MK2  阅读(759)  评论(0编辑  收藏  举报