其他分享
首页 > 其他分享> > 单例模式

单例模式

作者:互联网

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace DesignPattern.CreationalPatern
 8 {
 9     //定义 1.只能创建一个实例 2.提供一个全局访问
10 
11     public class SingletonPattern
12     {
13         private static SingletonPattern _singletonMode = null;
14         private static readonly object _objLock = new object();
15         private SingletonPattern() { }
16 
17         //双重锁定,防止多线程的资源浪费
18         public static SingletonPattern Instance() 
19         {
20             //判断是否已有实例,避免重复执行加锁操作,会消耗CPU资源,涉及到线程上线文切换
21             if (_singletonMode != null)
22             {
23                 //混合状态锁,锁对象一定要是用引用类型,因引用类型包含两个指针,TypeHandler和同步块索引(指向同步块实际意义上的锁)
24                 //锁对象不能使用字符串,字符串具有驻留性,可能多个AppDomin都会用到
25                 lock (_objLock)
26                 {
27                     if (_singletonMode != null)
28                     {
29                         _singletonMode = new SingletonPattern();
30                     }
31                 }
32             }
33 
34             return _singletonMode;
35         }
36     }
37 }
38  

 

标签:singletonMode,System,模式,static,private,单例,using,SingletonPattern
来源: https://www.cnblogs.com/howiego/p/SingletonPattern.html