设计模式 - Singleton Pattern(单例模式)

来源:互联网 发布:建设银行担保业务数据 编辑:程序博客网 时间:2024/05/01 19:44

from:设计模式 - Singleton Pattern(单例模式)  

 

设计模式 - Singleton Pattern(单例模式)

作者:webabcd介绍保证一个类仅有一个实例,并提供一个访问它的全局访问点。示例保证一个类仅有一个实例。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:112007-2-10 22:35:112007-2-10 22:35:142007-2-10 22:35:17OK

OK[源码下载]

原创粉丝点击