设计模式笔记(十七) —— 单例模式

单例模式(singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。 

  1. using System;
  2. //单例模式(singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  3. namespace StuDesignMode.Singleton
  4. {
  5.     #region 单例模式
  6.     //class Singleton
  7.     //{
  8.     //    private static Singleton instance;
  9.     //    private Singleton() { }
  10.     //    public static Singleton GetInstance()
  11.     //    {
  12.     //        if (instance == null)
  13.     //        {
  14.     //            return new Singleton();
  15.     //        }
  16.     //        return instance;
  17.     //    }
  18.     //}
  19.     #endregion
  20.     #region 多线程下的单例模式
  21.     //class Singleton
  22.     //{
  23.     //    private static Singleton instance;
  24.     //    //程序运行时创建一个静态只读的进程辅助对象
  25.     //    private static readonly object syncRoot = new object();
  26.     //    private Singleton() { }
  27.     //    public static Singleton GetInstance()
  28.     //    {
  29.     //        if (instance == null)  //先判断实例是否存在,不存在再加锁处理
  30.     //        {
  31.     //            lock (syncRoot)
  32.     //            {
  33.     //                if (instance == null)  //双重锁定
  34.     //                {
  35.     //                    return new Singleton();
  36.     //                }
  37.     //            }
  38.     //        }
  39.     //        return instance;
  40.     //    }
  41.     //}
  42.     #endregion
  43.     #region 单例模式-静态初始化
  44.     /**
  45.      * C#与公共语言运行库也提供了一种“静态初始化”方法,这种方法不需要开发人员显式地编写线程安全代码,即可以解决多线程环境下它是不安全的问题。
  46.      * 这种静态初始化的方式是在自己被加载时就将自己实例化,所以被形象地称之为饿汉式单例类;在第一次被引用时,才会将自己实例化,被称之为懒汉式单例类。前者要提前占用系统资源,后者只有在第一次调用的时候才会占用系统资源。
  47.      */
  48.     public sealed class Singleton
  49.     {
  50.         private static readonly Singleton instance = new Singleton();
  51.         private Singleton() { }
  52.         public static Singleton GetInstance()
  53.         {
  54.             return instance;
  55.         }
  56.     }
  57.     #endregion
  58.     
  59. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值