单例模式(Singleton Pattern)
介绍
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
示例
保证一个类仅有一个实例。
Singleton
using System; using System.Collections.Generic; using System.Text; namespace Pattern.Singleton { /// <summary> /// 泛型实现单例模式 /// </summary> /// <typeparam name="T">需要实现单例的类</typeparam> public class Singleton<T> where T : new() { /// <summary> /// 返回类的实例 /// </summary> public static T Instance { get { return SingletonCreator.instance; } } class SingletonCreator { internal static readonly T instance = new T(); } } }
Test
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Pattern.Singleton; public partial class Singleton : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // 使用单例模式,保证一个类仅有一个实例 Response.Write(Singleton<Test>.Instance.Time); Response.Write("<br />"); Response.Write(Singleton<Test>.Instance.Time); Response.Write("<br />"); // 不用单例模式 Test t = new Test(); Response.Write(t.Time); Response.Write("<br />"); Test t2 = new Test(); Response.Write(t2.Time); Response.Write("<br />"); } } public class Test { private DateTime _time; public Test() { System.Threading.Thread.Sleep(3000); _time = DateTime.Now; } public string Time { get { return _time.ToString(); } } }
运行结果
2007-2-10 22:35:11
2007-2-10 22:35:11
2007-2-10 22:35:14
2007-2-10 22:35:17