黄色国产视频,男女啪啪18禁无遮挡激烈,久草热8精品视频在线观看,四虎国产精品永久在线下载

            C#設計中單例模式實例講解

            時間:2022-06-29 06:25:22 設計 我要投稿
            • 相關推薦

            C#設計中單例模式實例講解

              前言

              最近開始花點心思研究下設計模式,主要還是讓自己寫的代碼可重用性高、保證代碼可靠性。所謂設計模式,我找了下定義:是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。毫無疑問,設計模式于己于他人于系統都是多贏的;設計模式使代碼編制真正工程化;設計模式是軟件工程的基石脈絡,如同大廈的結構一樣。

              為什么要提倡“Design Pattern(設計模式)”?

              根本原因是為了代碼復用,增加可維護性。因此這次我們來學習下設計模式,最后會通過C#語言來實現這些設計模式作為例子,深刻理解其中的精髓。

              定義

              單例模式是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統中一個類只有一個實例而且該實例易于外界訪問,從而方便對實例個數的控制并節約系統資源。如果希望在系統中某個類的對象只能存在一個,單例模式是最好的解決方案。

              特點

              1、 某個類只能有一個實例

              2、它必須自行創建這個實例

              3、它必須自行向整個系統提供這個實例。

              優缺點

              優點:

              一、實例控制

              單例模式會阻止其他對象實例化其自己的單例對象的副本,從而確保所有對象都訪問唯一實例。

              二、靈活性

              因為類控制了實例化過程,所以類可以靈活更改實例化過程。

              缺點:

              一、開銷

              雖然數量很少,但如果每次對象請求引用時都要檢查是否存在類的實例,將仍然需要一些開銷。可以通過使用靜態初始化解決此問題。

              二、可能的開發混淆

              使用單例對象(尤其在類庫中定義的對象)時,開發人員必須記住自己不能使用new關鍵字實例化對象。因為可能無法訪問庫源代碼,因此應用程序開發人員可能會意外發現自己無法直接實例化此類。

              三、對象生存期

              不能解決刪除單個對象的問題。在提供內存管理的語言中(例如基于.NET Framework的語言),只有單例類能夠導致實例被取消分配,因為它包含對該實例的私有引用。在某些語言中(如 C++),其他類可以刪除對象實例,但這樣會導致單例類中出現懸浮引用。

              復制代碼 代碼如下:

              ///

              /// 單例模式

              ///

              public class Singleton

              {

              // 定義一個靜態變量來保存類的實例

              private static Singleton mySingleton;

              // 定義私有構造函數,使外界不能創建該類實例

              private Singleton()

              {

              }

              //定義公有方法提供一個全局訪問點。

              public static Singleton GetInstance()

              {

              //這里的lock其實使用的原理可以用一個詞語來概括“互斥”這個概念也是操作系統的精髓

              //其實就是當一個進程進來訪問的時候,其他進程便先掛起狀態

              if (mySingleton == null)

              {

              mySingleton = new Singleton();

              }

              return mySingleton;

              }

              }

              上面的單例模式的實現是有問題的,當多個用戶或者方法同時訪問的時候,便會出現多個用戶同時拿到了mySingleton==null的結果,這個明顯不是我們想要的,因此,我們應該通過一個鎖來互斥這個方法,當很多線程同時訪問的時候,只允許一個線程進入到代碼中執行,而其他的便只能處于掛起的狀態。

              復制代碼 代碼如下:

              ///

              /// 單例模式

              ///

              public class Singleton

              {

              // 定義一個靜態變量來保存類的實例

              private static Singleton mySingleton;

              // 定義一個標識確保線程同步

              private static readonly object locker = new object();

              // 定義私有構造函數,使外界不能創建該類實例

              private Singleton()

              {

              }

              //定義公有方法提供一個全局訪問點。

              public static Singleton GetInstance()

              {

              //這里的lock其實使用的原理可以用一個詞語來概括“互斥”這個概念也是操作系統的精髓

              //其實就是當一個進程進來訪問的時候,其他進程便先掛起狀態

              if (mySingleton == null)//區別就在這里

              {

              lock (locker)

              {

              // 如果類的實例不存在則創建,否則直接返回

              if (mySingleton == null)

              {

              mySingleton = new Singleton();

              }

              }

              }

              return mySingleton;

              }

              }

              其實在一些項目中,單例模式早就有了體現。在開發asp.net的項目中,就已經用這種方法來包裝http上下文來實現計算機資源的節省。

              復制代碼 代碼如下:

              ///

              /// 業務倉儲

              ///

              public IBLL.IBLLSession BLLSession;

              //---------------------定義上下文屬性

              #region 實例構造函數 初始化業務倉儲 + OperateContext()

              public OperateContext()

              {

              BLLSession = DI.SpringHelper.GetObject("BLLSession");

              }

              #endregion

              #region Http上下文 以及相關屬性

              ///

              /// Http上下文

              ///

              HttpContext ContextHttp

              {

              get

              {

              return HttpContext.Current;

              }

              }

              HttpResponse Response

              {

              get

              {

              return ContextHttp.Response;

              }

              }

              HttpRequest Request

              {

              get

              {

              return ContextHttp.Request;

              }

              }

              HttpSessionState Session

              {

              get

              {

              return ContextHttp.Session;

              }

              }

              #endregion

              #region 獲取當前操作上下文(存在線程中,提高效率) + OperateContext Current

              //

              /// 獲取當前操作上下文(存在線程中,提高效率)

              ///

              public static OperateContext Current

              {

              get

              {

              OperateContext o = CallContext.GetData(typeof(OperateContext).Name) as OperateContext;

              if (o == null)

              {

              o = new OperateContext();

              CallContext.SetData(typeof(OperateContext).Name, o);

              }

              return o;

              }

              }

              #endregion

              總結

              到這里,就和大家一起先了解了單例模式到底是個什么東西,其實在一些項目中,這種模式就已經應用了,只是我們沒有去發現和總結,不過本來設計模式就是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。哎。。。。這次是第二次編輯了,本來這個單例模式已經發布了好多天,竟然被我新的一篇觀察者模式給覆蓋了,數據取不回來,只能匆匆完稿,大家見諒啊,有問題我們一起來討論,畢竟我也是初學者。

            【C#設計中單例模式實例講解】相關文章:

            六級考試寫作實例講解:話劇07-02

            語文閱讀教學模式講解07-02

            華為路由器配置實例詳細備注講解07-11

            四個實例講解面試自我介紹07-13

            LOGO字體設計實例07-14

            從零開始學攝影,實例講解巧用延時自拍07-09

            飛機方案設計實例07-03

            抽樣方案設計實例07-03

            觀察中的發現教材講解07-02

            古詩講解教學設計07-03

            主站蜘蛛池模板: 美女av在线免费观看| 国产精品爽爽va在线观看无码| 成人欧美一区二区| 天天综合视频网| 又色又爽又黄的网站| 精品爽爽久久久久久蜜臀| 最爽无遮挡行房视频 | 亚洲精品成人无码中文毛片| 浅井舞香av在线| 香蕉视频污黄| 久99久精品免费视频热| 乱人伦人妻精品一区二区| 国产色婷婷精品综合在线播放| 亚洲免费一级| 999久久久| 无码 人妻 在线视频| 免费男性肉肉影院| 久久免费看少妇高潮片,| www奇米| 亚洲AV无码久久久久网站蜜桃| 无码精品国产D在线观看| 欧美zoozzooz性欧美| 日韩a级一片| 尤物精品国产第一福利网站| 亚洲欧美另类激情综合区| 欧美少妇一区二区三区| 青青草原国产在线视频| 亚洲成人av综合一区| 乌克兰美女浓毛bbw| 日本高清www| 午夜激情影院在线观看| 精品淑女少妇av久久免费| 影音先锋人妻av中文字幕久久| 国产午夜三级一区二区三桃花影视| 亚洲精品美女久久久| ass日韩少妇毛茸茸pics| 久久精品国内一区二区三区| 国产69精品久久久久男男系列 | 成年人性生活网站| 亚洲一区二区精品视频在线观看| 国产免费一区二区三区在线观看|