• .net 4种单例模式


    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace SingletonDemo
    {
        /// <summary>
        /// 1、普通单例
        /// </summary>
        public class SingletonA
        {
            private static SingletonA _instance = null;
            private SingletonA() { }
            public static SingletonA CreateInstance()
            {
                if (_instance == null)
                {
                    _instance = new SingletonA();
                }
                return _instance;
            }
        }
    
        /// <summary>
        /// 2、线程安全单例
        /// </summary>
        public class SingletonB
        {
            private volatile static SingletonB _instance = null;
            private static readonly object lockHelper = new object();
            private SingletonB() { }
            public static SingletonB CreateInstance()
            {
                if (_instance == null)
                {
                    lock (lockHelper)
                    {
                        if (_instance == null)
                            _instance = new SingletonB();
                    }
                }
                return _instance;
            }
        }
        /// <summary>
        /// 3、使用.net特性的支持多线程的单件模式代码
        /// </summary>
        public sealed class SingletonC
        {
            private SingletonC() { }
            public static readonly SingletonC Instance = new SingletonC();
        }
    
        /// <summary>
        /// 4、使用 C# 2.0 泛型来完成单例模式的重用
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class SingletonProvider<T> where T : new()
        {
            SingletonProvider() { }
    
            public static T Instance
            {
                get { return SingletonCreator.instance; }
            }
    
            class SingletonCreator
            {
                static SingletonCreator() { }
    
                internal static readonly T instance = new T();
            }
        }
        /// <summary>
        /// 4、业务类demo
        /// </summary>
        public class TestClass
        {
            private string _createdTimestamp;
    
            public TestClass()
            {
                _createdTimestamp = DateTime.Now.ToString();
            }
    
            public void Write()
            {
                Console.WriteLine(_createdTimestamp);
            }
        }
        /// <summary>
        /// 4、范型单例示例
        /// </summary>
        public class demo
        {
            private void dosomething()
            {
                SingletonProvider<TestClass>.Instance.Write();
            }
        }
    }
    

      

  • 相关阅读:
    Android自定义Dialog
    Ubuntu中好用的中文输入法
    Android_去掉EditText控件周围橙色高亮区域
    Android中Bitmap,byte[],Drawable相互转化
    准备期末考试 博客不更了
    NYOJ5 Binary String Matching ——KMP
    hdu1420 Prepared for New Acmer ——快速幂
    点头1010 只包含因子2 3 5的数
    Constructing Roads ——最小生成树
    hdu1257 最少拦截系统 ——DP么?
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/6558844.html
Copyright © 2020-2023  润新知