码迷,mamicode.com
首页 > 其他好文 > 详细

单例实现方式

时间:2017-03-25 15:46:45      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:let   句柄   null   --   tostring   get   父类   end   ado   

游戏中很多地方,都需要用到单例模式,虽然单例实现代码不多,但是每一个脚本都重复写的话,也相当的麻烦。

我们可以这样,写一个泛型的父类,来实现这个单例模式,然后其余的只要继承这个父类,自然就有 1 public class HNSingleton<T> where T :class

 2     {
 3 
 4         #region 私有变量
 5 
 6         private static T g_instance;                                                // 静态实例句柄
 7         private static readonly object g_instanceLock = new object();               // 锁,控制多线程冲突
 8 
 9         #endregion
10 
11         #region 公开属性
12 
13         /// <summary>
14         /// 获取单例
15         /// </summary>
16         /// <remarks>即单例模式中所谓的全局唯一公共访问点</remarks>
17         public static T Instance
18         {
19             get
20             {
21                 // 此处双重检测,确保多线程无冲突
22                 if (g_instance == null)
23                 {
24                     lock (g_instanceLock)
25                     {
26                         if (g_instance == null)
27                         {
28                             g_instance = (T)System.Activator.CreateInstance(typeof(T), true);
29                             System.Console.WriteLine("hnu3d.........unity......create instance:" + g_instance.ToString());
30 
31                         }
32                     }
33                 }
34 
35             
36 
37                 return g_instance;
38             }
39         }
40 
41 
42 
43         #endregion
44 
45 
46 
47         #region 销毁对象
48 
49         public void DelMe()
50         {
51             // 此处双重检测,确保多线程无冲突
52             if (g_instance != null)
53             {
54                 lock (g_instanceLock)
55                 {
56                     if (g_instance != null)
57                     {                  
58                         HNLogger.Log ("..delet---:" + g_instance.ToString());
59                         g_instance = null;
60                     }
61                 }
62             }
63 
64         }
65 
66         
68     }

当其它脚本需要单例模式时,只需要继承该脚本即可实现单例模式了。

单例实现方式

标签:let   句柄   null   --   tostring   get   父类   end   ado   

原文地址:http://www.cnblogs.com/leiGameDesigner/p/6617034.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!