zoukankan      html  css  js  c++  java
  • c#单例模式的实现

      单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供。

      实现要点:

        1、是单例模式的类只提供私有的构造函数。

          2、是类定义中含有一个该类的静态私有对象。

        3、是该类提供了一个静态的共有的函数用于创建或获取它本身的静态私有对象。

      双重锁定实现代码(多线程内):

    namespace Singleton
    {
        public class Singleton
        {
            //定义一个私有的静态全局变量来保存该类的唯一实例
            private static Singleton _singleton;
            //定义一个只读静态对象
            //且这个对象是在程序运行时创建的
            private static readonly object _lockObj = new object();
            /// <summary>
            /// 构造函数必须是私有的
            /// 这样在外部便无法使用 new 来创建该类的实例
            /// </summary>
            private Singleton() { }
            /// <summary>
            /// 定义一个全局访问点
            /// 设置为静态方法
            /// 则在类的外部便无需实例化就可以调用该方法
            /// </summary>
            /// <returns></returns>
            public static Singleton GetInstance()
            {
                //这里可以保证只实例化一次
                //即在第一次调用时实例化
                //以后调用便不会再实例化
                //第一重 singleton == null
                if (_singleton == null)
                {
                    lock (_lockObj)
                    {
                        //第二重 singleton == null
                        if (_singleton == null)
                        {
                            _singleton = new Singleton();
                        }
                    }
                }
                return _singleton;
            }
        }
    }
  • 相关阅读:
    Qbxt 模拟题 day2(am) T2 jian
    Codevs 1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组
    洛谷比赛 U5442 买(最长链)
    洛谷 P1800 software_NOI导刊2010提高(06)(二分答案+DP检验)
    Codevs 4373 窗口(线段树 单调队列 st表)
    P1453 城市环路
    P1841 [JSOI2007]重要的城市
    P1410 子序列
    H
    GSS4 D
  • 原文地址:https://www.cnblogs.com/GodX/p/3894554.html
Copyright © 2011-2022 走看看