设计模式——单例模式

1、什么是单例模式

单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

2、单例模式的特点:

  • 单例类只能有一个实例。
  • 单例类必须自己创建自己的唯一实例。
  • 单例类必须给所有其它对象提供这一实例。

3、单例模式分为懒汉式和饿汉式

  3.1、懒汉式

    public class LazySingleton
    {
        //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
        private static LazySingleton _lazySingleton = null;
        private static object obj = new object();

        private LazySingleton()
        {

        }

        /// <summary>
        /// 懒汉式
        /// </summary>
        /// <returns></returns>
        public static LazySingleton GetInstance()
        {
            //有线程安全问题,需要加锁
            lock (obj)
            {
                if (_lazySingleton == null)
                {
                    _lazySingleton = new LazySingleton();
                }
            }
            return _lazySingleton;
        }
    }

  3.2、饿汉式

    public class EagerSingleton
    {
        //在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快
        private static EagerSingleton _eagerSingleton = new EagerSingleton();
        private EagerSingleton()
        {

        }
        /// <summary>
        /// 饿汉式
        /// </summary>
        /// <returns></returns>
        public static EagerSingleton GetInstance()
        {
            //静态,不用同步(类加载时已初始化,不会有多线程的问题)
            return _eagerSingleton;
        }
    }

 

posted @ 2018-09-25 16:03  公羊天纵  阅读(161)  评论(0编辑  收藏  举报