介绍
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
示例
保证一个类仅有一个实例。
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
***********************************************************************************************
*【Author】:webabcd
*【Date】:2013年08月18日
*【URL】:http://www.cnblogs.com/webabcd/archive/2007/04/01/696021.html
*【Notice】:
*1、本文为原创技术文章,首发博客园个人站点。
*2、请尊重原创的成果,转载和引用请注明作者及出处。
*3、本文必须全文转载和引用,任何组织和个人未授权不能修改任何内容,并且未授权不可用于商业。
*4、本声明为文章一部分,转载和引用必须包括在原文中。
***********************************************************************************************