• 从C#角度 单例模式 懒汉和饿汉


    单例模式:
       
         关键点: 1、一个类只有一个实例; 2、类自行创建该实例; 3、类自行向整个系统提供该实例。

    代码展示:

    namespace SingleTon
    {
        /// <summary>
        /// 懒汉单例、多线程安全
        /// 比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
        /// </summary>
        public class LazySingleTon
        {
            private static LazySingleTon instance = null;
            //多线程安全
            private static object lockObject = new object();
            private LazySingleTon()
            {
                Console.WriteLine("private LazySingleTon()");
            }
    
            public static LazySingleTon Instance
            {
                get
                {
                    //不必每次锁,提高效率
                    if (instance == null)
                    {
                        //多线程安全
                        lock (lockObject)
                        {
                            if (instance == null)
                            {
                                return new LazySingleTon();
                            }
                        }
                    }
                    return instance;
                }
            }
        }
    
        /// <summary>
        /// 饿汉单例
        /// 在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快
        /// </summary>
        public class EagerSingleTon
        {
            // readonly 分配的动态内存
            private static readonly EagerSingleTon instance = new EagerSingleTon();
    
            private EagerSingleTon()
            {
                Console.WriteLine("private EagerSingleTon()");
            }
    
            public static EagerSingleTon Instance
            {
                get
                {
                    return instance;
                }
            }
    
        }
        class Program
        {
            static void Main(string[] args)
            {
                var lazy = LazySingleTon.Instance;
                var eager = EagerSingleTon.Instance;
            }
        }
    }
  • 相关阅读:
    hdu 3018
    poj 1833 排列
    poj 1256 Anagram
    CF 548B Mike and Fun
    CF 548A
    【冰茶几专题】F
    【冰茶几专题】C
    535 C.Tavas and karafs
    [WA]cf 534 D. Handshakes
    cf 534C. Polycarpus' Dice
  • 原文地址:https://www.cnblogs.com/uicodeintoworld/p/8986785.html
Copyright © 2020-2023  润新知