<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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
        主站蜘蛛池模板: 一级毛片试看60分钟免费播放| 亚洲激情校园春色| 成人亚洲国产精品久久| 在人线av无码免费高潮喷水| 亚洲女人18毛片水真多| 桃子视频在线观看高清免费完整| 亚洲视频国产精品| 久久国产免费福利永久| 亚洲天堂电影在线观看| 久久久久久久久免费看无码| 亚洲一卡一卡二新区无人区| 青青青国产免费一夜七次郎 | 精品国产sm捆绑最大网免费站| 亚洲狠狠综合久久| 在线看免费观看AV深夜影院| 亚洲综合偷自成人网第页色| 在线视频免费国产成人| 一区二区三区免费在线视频| 伊人亚洲综合青草青草久热| 99在线观看免费视频| 亚洲国产精品成人综合色在线婷婷| 女人与禽交视频免费看| 黄色一级视频免费观看| 久久精品国产亚洲沈樵| h在线观看视频免费网站| 亚洲日本在线电影| 久久青青草原亚洲av无码| 日韩免费观看一区| 亚洲精品无码一区二区| 亚洲区小说区激情区图片区| 国产精品免费精品自在线观看| 日韩国产欧美亚洲v片| 亚洲国产精品无码久久一区二区| 欧洲乱码伦视频免费| 新最免费影视大全在线播放| 亚洲AV无码不卡在线播放| 好吊妞在线新免费视频| 中文字幕乱码系列免费| 亚洲午夜在线一区| 亚洲日本va在线视频观看| 成年人性生活免费视频|