国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

.Net 單例模式(Singleton)

來源:懂視網 責編:小采 時間:2020-11-27 22:40:48
文檔

.Net 單例模式(Singleton)

.Net 單例模式(Singleton):每臺計算機可以有若干個打印機,但只能有一個Printer Spooler, 以避免兩個打印作業同時輸出到打印機中。每臺計算機可以有若干傳真卡,但是只應該有一個軟件負責管理傳真卡,以避免出現兩份傳真作業同時傳到傳真卡中的情況。每臺計算機可以有若干通信端口,系
推薦度:
導讀.Net 單例模式(Singleton):每臺計算機可以有若干個打印機,但只能有一個Printer Spooler, 以避免兩個打印作業同時輸出到打印機中。每臺計算機可以有若干傳真卡,但是只應該有一個軟件負責管理傳真卡,以避免出現兩份傳真作業同時傳到傳真卡中的情況。每臺計算機可以有若干通信端口,系

每臺計算機可以有若干個打印機,但只能有一個Printer Spooler, 以避免兩個打印作業同時輸出到打印機中。每臺計算機可以有若干傳真卡,但是只應該有一個軟件負責管理傳真卡,以避免出現兩份傳真作業同時傳到傳真卡中的情況。每臺計算機可以有若干通信端口,系統應當集中管理這些通信端口,以避免一個通信端口同時被兩個請求同時調用。

問題描述:

        單例模式 Singleton Pattern

問題解決:

(1)單例模式簡介:

Singleton模式要求一個類有且僅有一個實例,并且提供了一個全局的訪問點。這就提出了一個問題:如何繞過常規的構造器,提供一種機制來保證一個類只有一個實例?客戶程序在調用某一個類時,它是不會考慮這個類是否只能有一個實例等問題的,所以,這應該是類設計者的責任,而不是類使用者的責任。

單例模式特點:

    (1.1)一個類有且僅有一個實例

    (1.2)類提供一個全局的訪問點

        (2)單例模式的實現:

(2.1)簡單實現:

clipboard

上述實現的優點:

          (1)直到對象要求時,才進行實例的初始化,這種實現方法稱為:“惰性實例化”,惰性實例化,避免了程序啟動時創建不必要的Singleton。

上述實現的缺點:

           (1)這種實現對于多線程環境并不安全,可能實例化多個對象,例如可能存在兩個線程進行instance==null的判斷,然后創建兩個單例對象,這就違背了單例模式的設計意圖。

    (2.2)安全的線程:

clipboard

以上的實現保證了單例對象在多線程的情況下只會創建一個,但是padlock增加了額外的開銷

    (2.3)雙重鎖定

clipboard

        這種實現方式對多線程來說是安全的,同時線程不是每次都加鎖,只有判斷對象實例沒有被創建時它才加鎖,有了我們上面第一部分的里面的分析,我們知道,加鎖后還得再進行對象是否已被創建的判斷。它解決了線程并發問題,同時避免在獲取 Instance 的調用中都出現獨占鎖定。它還允許您將實例化延遲到第一次訪問對象時發生。實際上,應用程序很少需要這種類型的實現。大多數情況下我們會用靜態初始化。這種方式仍然有很多缺點:無法實現延遲初始化。

(2.4)靜態初始化

clipboard

        此實現中,將在第一次引用類的任何成員創建實例,該類標記為 sealed 以阻止發生派生,而派生可能會增加實例。此外,變量標記為 readonly,這意味著只能在靜態初始化期間(此處顯示的示例)或在類構造函數中分配變量。它仍然可以用來解決 Singleton 模式試圖解決的兩個基本問題:全局訪問和實例化控制。公共靜態屬性為訪問實例提供了一個全局訪問點。此外,由于構造函數是私有的,因此不能在類本身以外實例化 Singleton 類;因此,變量引用的是可以在系統中存在的唯一的實例。

由于 Singleton 實例被私有靜態成員變量引用,因此在類首次被對 Instance 屬性的調用所引用之前,不會發生實例化。這種方法唯一的潛在缺點是,您對實例化機制的控制權較少。在 Design Patterns 形式中,您能夠在實例化之前使用非默認的構造函數或執行其他任務。由于在此解決方案中由 .NET Framework 負責執行初始化,因此您沒有這些選項。在大多數情況下,靜態初始化是在 .NET 中實現 Singleton 的首選方法。

     (2.5)延遲初始化:

clipboard

        (3)單例模式的優缺點:

clipboard

        (4)單例模式適用情況和應用場景:

clipboard

        (5)具體實例:

總結:

        Singleton設計模式是一個非常有用的機制,可用于在面向對象的應用程序中提供單個訪問點。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

.Net 單例模式(Singleton)

.Net 單例模式(Singleton):每臺計算機可以有若干個打印機,但只能有一個Printer Spooler, 以避免兩個打印作業同時輸出到打印機中。每臺計算機可以有若干傳真卡,但是只應該有一個軟件負責管理傳真卡,以避免出現兩份傳真作業同時傳到傳真卡中的情況。每臺計算機可以有若干通信端口,系
推薦度:
標簽: 模式 net 單例模式
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产资源网站 | 91视频国产91久久久 | 亚洲日本一区二区三区 | 日韩国产免费一区二区三区 | a天堂专区一区二区三区 | 日本在线不卡一区二区 | 一区二区三区电影 | 国产精品九九 | 97精品国产91久久久久久久 | 亚洲国产精品久久久久 | 欧美第5页 | 欧美亚洲视频在线观看 | 欧美亚洲激情 | 亚洲精品第一页 | 欧美高清第一页 | 国产一区二区精品久久 | 久久久久亚洲精品美女 | 日本a级精品一区二区三区 日本不卡视频一区二区三区 | 日韩欧美色图 | 亚洲一区二区三区久久久久 | 九九久久亚洲综合久久久 | 欧美日在线观看 | 久久精品国产一区二区三区不卡 | 国产aⅴ精品一区二区三区久久 | 国产第7页| 亚洲色图欧美在线 | 国产在线观看第一页 | 亚洲视频入口 | 国产在线观看网站 | 亚洲欧洲免费 | 性殴美| 男女全黄一级带免费 | 亚洲第二页 | 日韩精品第二页 | 久久国产精品电影 | 欧美一区二区三区四区视频 | 成人一级片在线观看 | 在线免费观看一区二区三区 | 国产精品视频免费视频 | 亚洲精品自产拍在线观看app | 大色欧美 |