zoukankan      html  css  js  c++  java
  • 单例模式

    1)单例模式的实现

    ①定义private static 实例。

    ②定义private构造函数,组织外部通过构造函数构造对象。

    ③定义public static Get方法。

    ④多线程时,Get方法中采用 2-if-1-lock 写法。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace DesignMode
    {
        public class SingletonClass
        {
            private static SingletonClass instance;
            private static readonly object locker = new object();
            private SingletonClass()
            {
            }
    
            static public SingletonClass GetSingletonInstance()
            {
                if (instance == null)
                {
                    lock (locker)
                    {
                        if (instance == null)
                        {
                            instance = new SingletonClass();
                        }
                    }
                }
                return instance;
            }
    
    
        }
    }
    

    2)测试

            static void TestSingleton()
            {
                SingletonClass single1 = SingletonClass.GetSingletonInstance();
                SingletonClass single2 = SingletonClass.GetSingletonInstance();
                if (single1 == single2)
                {
                    Console.WriteLine("equal");
                }
            }
    

    3)何时使用单例模式。

    例如创建对象特别耗资源(时间,内存),希望只创建1次,之后拿来就用。

     4)其他实现方法

    ①定义private构造函数

    ②定义Static 变量,该变量在类第一次使用时初始化,多线程时不需要锁。

        public class SingletonPatternStatic
        {
            public static SingletonPatternStatic Instance = new SingletonPatternStatic();
            private SingletonPatternStatic()
            {
                Thread.Sleep(2000);
                Console.WriteLine("SingletonPatternStatic()");
            }
        }
  • 相关阅读:
    ubuntu查看安装的pytorch/cuda版本
    go不使用工具包将大写字符转成小写字符的方法
    使用Nexus搭建Maven私服
    maven setting.xml配置说明
    maven的仓库、生命周期与插件
    maven项目搭建
    maven之详解继承与聚合
    Maven核心概念之依赖,聚合与继承
    commons-logging日志系统
    新建我的 第一个maven项目
  • 原文地址:https://www.cnblogs.com/wyvern0618/p/8819607.html
Copyright © 2011-2022 走看看