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

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

  • 相关阅读:
    Java 抽象类
    Java final 关键字
    Java 异常机制
    hashcode和equals
    DevExpress 柱状图
    Windows X64平台搭建Java开发环境
    J2EE 学习路线
    winform 客户端采用HTTP协议与服务端通信
    C# 处理Json
    性能分析工具 DotTrance
  • 原文地址:https://www.cnblogs.com/liurui/p/5542882.html
Copyright © 2020-2023  润新知