C#單例模式

來源:互聯網
上載者:User

標籤:

第一次接觸單例模式還是在我學習ios的時候用oc來實現的單例模式。那時候學的也是亂糟糟的。我剛開始以為C# 是沒有單例模式的,後來看了好多東西才發現原來C#也有單例模式。

單例模式顧名思義,就是在整個程式生命週期中有且僅有一個執行個體。那麼在C#中怎麼實現呢?

C#中實現單例模式其實很簡單要考兩樣東西,私人建構函式、和static的對象。

下面程式碼範例了一個簡單的單例模式的一個類。

public class sigle{    private static _sigle=null;    private sigle(){}    public static sigle GetInstance()    {        if(sigle==null)        {            _sigle=new sigle();        }        return _sigle    }}
View Code

看了代碼那麼我們來理一理思路。

1、通過私人建構函式來防止通過new來建立該類的對象。

2、通過私人欄位_sigle來儲存該類的對象。

3、通過共有靜態方法GetInstance來擷取到這個類的對象。

這個GetInstance其實也很簡單他會先判斷私人欄位_sigle是否已經儲存了這個類的對象如果是則直接返回這個對象如果不是則new一個新對象並賦值給欄位_sigle。

也許大家會說為什麼這裡可以new呢?很簡單這裡是在這個類的內部也就是可以調用這個類的私人建構函式。

大家知道靜態欄位、屬性和方法都是屬於類的在整個程式的生命週期內鬥是存在的所以_sigle只能被賦值一次也就實現了整個應用程式生命週期內該類只能建立一次執行個體的目的。

C#單例模式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.