c# 设计模式-单例模式

来源:互联网 发布:labview编程详解书 编辑:程序博客网 时间:2024/06/08 05:40


1、单线程简单实现

    public class SingletonObject    {        private static SingletonObject instance = null;        public static SingletonObject Instance        {            get            {                if (instance == null)                {                    instance = new SingletonObject();                }                return instance;            }        }        private SingletonObject()        {                    }    }

2、处理多线程

    public class SingletonObject    {        private static SingletonObject instance = null;        private static readonly object lockObj = new object();        public static SingletonObject Instance        {            get            {                lock(lockObj)                {                    if (instance == null)                    {                        instance = new SingletonObject();                    }                }                return instance;            }        }        private SingletonObject()        {                    }    }


3、双重检查加锁(double-checked locking)

    public class SingletonObject    {        private static SingletonObject instance = null;        private static readonly object lockObj = new object();        public static SingletonObject Instance        {            get            {                if(instance == null)                {                    lock (lockObj)                    {                        if (instance == null)                        {                            instance = new SingletonObject();                        }                    }                }                return instance;            }        }        private SingletonObject()        {                    }    }


4、静态初始化

(1)直接初始化方式

    public class SingletonObject    {        private static SingletonObject instance = new SingletonObject();        public static SingletonObject Instance        {            get            {                return instance;            }        }        private SingletonObject()        {                    }    }


(2)使用静态构造函数

    public class SingletonObject    {        private static SingletonObject instance = null;        public static SingletonObject Instance        {            get            {                return instance;            }        }        static SingletonObject()        {            instance = new SingletonObject();        }        private SingletonObject()        {                    }    }




0 0
原创粉丝点击