C#设计模式----单列模式

单例模式是设计模式中最简单和最容易理解的模式,需要注意的地方只有一个,第一次实例化的时候要确保是线程安全即可。

第一种实现

    /// 
    /// 多线程不安全单利
    /// 
    public class Single
    {
        private static Single Instance;
        private Single()
        { }
        public static Single GetInstance()
        {
            if (Instance == null)
                Instance = new Single();
            return Instance;
        }
    }

第二种实现

    /// 
    /// 多线程安全单利 每次要加锁浪费资源
    ///  
    public class Single
    {
        private static Single Instance;
        private static readonly object locker = new object();
        private Single()
        { }
        public static Single GetInstance()
        {
            lock (locker)
            {
                if (Instance == null)
                    Instance = new Single();
            }
            return Instance;
        }
    }

第三中实现 

    /// 
    /// 多线程安全单利 只需要第一次判断是否加锁
    ///  
    public class Single
    {
        private static Single Instance;
        private static readonly object locker = new object();
        private Single()
        { }
        public static Single GetInstance()
        {
            if (Instance == null)
            {
                lock (locker)
                {
                    if (Instance == null)
                        Instance = new Single();
                }
            }
            return Instance;
        }
    }

第四种实现

    /// 
    /// 多线程安全单利 C#运行时保证任何线程第一次访问Instance静态变量之前一定先创建实例
    ///  
    public class Single
    {
        private static Single Instance = new Single();
        private Single()
        { }
        public static Single GetInstance()
        {
            return Instance;
        }
    }

 

你可能感兴趣的:(设计模式)