国产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
主站蜘蛛池模板: 国产成人久久精品激情 | 日韩在线第三页 | 久久一本日韩精品中文字幕屁孩 | 亚欧色| 欧美v日韩v亚洲v最新 | 久热精品在线观看 | 日韩电影免费在线观看视频 | 91频道 | 国产成人不卡亚洲精品91 | 永久免费观看的毛片的网站下载 | 91欧美在线 | 久久久国产这里有的是精品 | 国产人成精品综合欧美成人 | 国产精品久久久久久久久99热 | 日本免费黄色网址 | 九九51精品国产免费看 | 国产福利一区二区 | 欧美日韩亚洲一区二区三区 | 在线亚洲欧美日韩 | 免费一区二区 | 欧洲高清一区二区三区试看 | 一级毛片免费视频 | 91久久精品国产一区二区 | 欧美国产精品va在线观看 | 在线观看免费国产视频 | 亚洲三级电影网 | 日韩三级一区二区 | 欧美性俄罗斯18精品 | 在线观看视频一区二区三区 | 国产一区三区二区中文在线 | 91久久精品国产91性色tv | 国产精品成人久久久久久久 | 国产成人调教视频在线观看 | 亚洲乱码一二三四区麻豆 | 国内视频一区二区三区 | 亚洲欧美网址 | 岛国一区二区 | 91香蕉国产亚洲一区二区三区 | 成人一级片在线观看 | 亚洲精品影院久久久久久 | 欧美在线国产 |