单例模式

项目中用到的比较好的,简单单例写法总结下:

namespace DesignMode
{
    public class SingleExample
    {
        //第一种:创建静态变量,下次调用直接取。
        public void RunOne()
        {
            SingleOne.Init();

            //其他的地方调用
            SingleOne.Instance.list.Add(1);

            SingleOne.Instance.list.Add(2);

            SingleOne.Instance.list.ForEach(x=> {
                Console.WriteLine(x);
            });
        }
        //第二种:构造函数私有化

        public void RunTwo()
        {
            SingleOne.Instance.list.Add(1);
            SingleOne.Instance.list.Add(2);
            SingleOne.Instance.list.ForEach(x=> {
                Console.WriteLine(x);
            });
        }
    }

    public class SingleOne
    {
        public static SingleOne Instance { get; set; }

        public List<int> list = new List<int>();

        public static void Init()
        {
            Instance = new SingleOne();
        }
    }

    public class SingleTwo
    {
        private static  object lockSingle = new object();
        private static SingleTwo _instance;
        private SingleTwo()
        {
        }

        public static SingleTwo Instance {
            get {
                if (_instance==null)
                {
                    lock (lockSingle)
                    {
                        if (_instance==null)
                        {
                            _instance = new SingleTwo();
                        }
                    }
                }
                return _instance;
            }
        }

    }
}
原文地址:https://www.cnblogs.com/zhuyapeng/p/11956796.html