樂在其中設計模式(C#) – 單例模式(Singleton Pattern)

來源:互聯網
上載者:User
[索引頁]
[源碼下載]

樂在其中設計模式(C#) - 單例模式(Singleton Pattern)

作者:webabcd

介紹
保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點。

樣本
保證一個類僅有一個執行個體。

Singletonusing 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();
        }
    }
}

Testusing 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

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

OK
[源碼下載] 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.