单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

Singleton类

提供两种单例的方式:

namespace SingletonPattern
{
    //懒汉式单例类
    //class Singleton
    //{
    //    private static Singleton instance;
    //    private static readonly object sysRoot = new object();
    //    private Singleton()
    //    {
    //    }
    //    public static Singleton GetInstance()
    //    {
    //        //多线程单例双重锁定 
    //        if (instance == null) //先判断实例是否存在,不存在再加锁处理
    //        {
    //            lock (sysRoot)
    //            {
    //                if (instance == null)
    //                {
    //                    instance = new Singleton();
    //                }
    //            }
    //        }
    //        return instance;
    //    }
    //}

    //静态初始化,饿汉式单例类
    public sealed class Singleton
    {
        private static readonly Singleton instance = new Singleton();
        private Singleton()
        { }
        public static Singleton GetInstance()
        {
            return instance;
        }
    }
}
View Code

测试类:(TestMain)

namespace SingletonPattern
{
    class TestMain
    {
        static void Main(string[] args)
        {
            Singleton instance = Singleton.GetInstance();
            Singleton instance1 = Singleton.GetInstance();

            if (instance == instance1)
            {
                Console.WriteLine("两个对象是相同的实例!");
            }

            Console.WriteLine();
        }
    }
}
View Code

测试结果

posted on 2013-08-15 20:17  zxd543  阅读(96)  评论(0编辑  收藏  举报