• 设计模式10-单例模式


     1 namespace DesignModel.单例模式
     2 {
     3     /// <summary>
     4     /// 懒汉式单例
     5     /// </summary>
     6     public class Singleton
     7     {
     8         private static Singleton instance;
     9 
    10         private static readonly object obj = new object();
    11         private Singleton()
    12         {
    13 
    14         }
    15         public Singleton GetInstance()
    16         {
    17             if (instance == null)//双重锁定
    18             {
    19 
    20 
    21                 lock (obj)
    22                 {
    23                     if (instance == null)
    24                     {
    25                         instance = new Singleton();
    26                     }
    27                 }
    28 
    29             }
    30             return instance;
    31         }
    32     }
    33 
    34     /// <summary>
    35     ///静态初始化的方法
    36     /// 饿汉式单例
    37     /// </summary>
    38     public class Singleton2
    39     {
    40         /// <summary>
    41         /// static 在运行时就分配内存给instance,CLR自己管理多线程问题,readonly 只允许在申明和构造函数中初始化,而又把构造函数申明为private。
    42         /// 所以不再会改变了。
    43         /// </summary>
    44         private static readonly Singleton2 instance = new Singleton2();
    45         private Singleton2() { }
    46         public Singleton2 GetInstance() {
    47             return instance;
    48         }
    49     }
    50 
    51 
    52 
    53 }

     单例模式:很常见,需要注意的便是线程安全写法。

  • 相关阅读:
    JPA-基本注解
    响应式、自适应式
    Spring boot传值注意事项
    Angular与Vue
    Java 时间转换
    SpringBoot 上传读取图片 巨坑
    前后端分离之 文件上传
    System.nanoTime与System.currentTimeMillis
    sqlserver 新增子段有默认值
    json转换
  • 原文地址:https://www.cnblogs.com/liurui/p/5542882.html
Copyright © 2020-2023  润新知