• 设计模式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 }

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

  • 相关阅读:
    周志华 机器学习
    王亮 中国科学院自动化研究所
    殷明 合肥工业大学
    批处理命令行 for循环
    CalFrechetDist
    等高线简化线方法对比(多尺度评价方法)
    周成虎
    MFC 使用控制台打印程序信息
    C++ 获得本地磁盘盘符的容量信息
    VS2012+CUDA6.0配置方法
  • 原文地址:https://www.cnblogs.com/liurui/p/5542882.html
Copyright © 2020-2023  润新知