C#乐在其中设计情势(C#) – 单例形式(Singleton Pattern)

[索引页] [源码下载]

乐在其中设计情势(C#) – 单例方式(Singleton Pattern)

作者:webabcd

介绍
管教一个类仅有一个实例,并提供一个拜访它的全局访问点。

示例
确保一个类仅有一个实例。
C# 1

Singleton

C# 2using System;
C# 3using System.Collections.Generic;
C# 4using System.Text;
C# 5
C# 6namespace Pattern.Singleton
C# 7C# 8C# 9{
C# 10C# 11    /**//// <summary>
C# 12    /// 泛型已毕单例格局
C# 13    /// </summary>
C# 14    /// <typeparam name=”T”>须要贯彻单例的类</typeparam>
C# 15    public class Singleton<T> where T : new()
C# 16C# 17    C# 18{
C# 19C# 20        /**//// <summary>
C# 21        /// 重回类的实例
C# 22        /// </summary>
C# 23        public static T Instance
C# 24C# 25        C# 26{
C# 27C# 28            get C# 29{ return SingletonCreator.instance; }
C# 30        }
C# 31
C# 32        class SingletonCreator
C# 33C# 34        C# 35{
C# 36            internal static readonly T instance = new T();
C# 37        }
C# 38    }
C# 39}
C# 40

Test

C# 41using System;
C# 42using System.Data;
C# 43using System.Configuration;
C# 44using System.Collections;
C# 45using System.Web;
C# 46using System.Web.Security;
C# 47using System.Web.UI;
C# 48using System.Web.UI.WebControls;
C# 49using System.Web.UI.WebControls.WebParts;
C# 50using System.Web.UI.HtmlControls;
C# 51
C# 52using Pattern.Singleton;
C# 53
C# 54public partial class Singleton : System.Web.UI.Page
C# 55C# 56C# 57{
C# 58    protected void Page_Load(object sender, EventArgs e)
C# 59C# 60    C# 61{
C# 62        // 使用单例格局,保障一个类仅有一个实例
C# 63        Response.Write(Singleton<Test>.Instance.Time);
C# 64        Response.Write(“<br />”);
C# 65        Response.Write(Singleton<Test>.Instance.Time);
C# 66        Response.Write(“<br />”);
C# 67
C# 68        // 不用单例格局
C# 69        Test t = new Test();
C# 70        Response.Write(t.Time);
C# 71        Response.Write(“<br />”);
C# 72        Test t2 = new Test();
C# 73        Response.Write(t2.Time);
C# 74        Response.Write(“<br />”);
C# 75    }
C# 76}
C# 77
C# 78public class Test
C# 79C# 80C# 81{
C# 82    private DateTime _time;
C# 83
C# 84    public Test()
C# 85C# 86    C# 87{
C# 88        System.Threading.Thread.Sleep(3000);
C# 89        _time = DateTime.Now;    
C# 90    }
C# 91
C# 92    public string Time
C# 93C# 94    C# 95{
C# 96C# 97        get C# 98{ return _time.ToString(); }
C# 99    }
C# 100}
C# 101

运转结果
2007-2-10 22:35:11
2007-2-10 22:35:11
2007-2-10 22:35:14
2007-2-10 22:35:17

参考
http://www.dofactory.com/Patterns/PatternSingleton.aspx

OK
[源码下载] 

相关文章