Asp.Net 設計模式 之 單例模式


一、設計目的:讓項目中只顯示一個實例對象

二、設計步驟:

  1. 創建一個類;
  2. 構建類類型靜態變量;
  3. 定義返回值類為單例類型的靜態方法;
  4. 判斷靜態變量instance是否為空:如果為空,就創建實例,然后給單例類中的字段進行賦值;如果不為空:返回此變量(return instance;)
  5. 單例模式創建成功;

三、項目相關名詞或知識點解釋

  • 此處類類型:如果當前類為SingleCase,則此靜態變量類型也要為SingleCase類型,
  • 即在此處定義的靜態變量的類型要和這個當前類的類型相同
  • 定義單例實例變量時,盡量都用instance(實例)來指代,方便以后自己和他人對代碼的閱讀。
  • 靜態變量在內存中只有一個,只占一份兒

四、相關源碼

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace SingleCaseModel00
 8 {
 9     /// <summary>
10     /// 1.創建這么一個類
11     /// </summary>
12     class SingleCase
13     {
14         //2.構建類類型靜態變量
15         //此處類類型:如果當前類為SingleCase,則次靜態變量類型也要為SingleCase類型,
16         //即在此處定義的靜態變量的類型要和這個當前類的類型相同
17         //定義單例實例變量時,盡量都用instance(實例)來指代,方便閱讀
18         //靜態變量在內存中只有一個,只占一份兒
19         public static SingleCase instance = null;
20         //10.定義一個字段,用來進行測試
21         public string name;
22         //3.定義返回值類為單例類型的靜態方法
23         public static SingleCase getInstance(string n)
24         {
25             //4.判斷靜態變量instance是否為空
26             if (instance == null)
27             {
28                 //5.如果為空,就創建實例
29                 instance = new SingleCase();
30                 //6.給單例類中的字段進行賦值
31                 instance.name = n;
32             }
33             //7.返回此變量
34             return instance;
35         }
36         //8.如果這個類中還有其他的字段,那么直接在下面寫出來即可
37         //如下:
38         //public string Name;
39         //public int Age;
40     }
41     class Program
42     {
43         static void Main(string[] args)
44         {
45             //9.調用上述單例類中方法,測試單例類
46             SingleCase s1 = SingleCase.getInstance("我是第一次傳過來的參數");
47             SingleCase s2 = SingleCase.getInstance("我是第二次傳過來的參數");
48             Console.WriteLine(s1.name);
49             Console.WriteLine(s2.name);
50             Console.ReadKey(); 
51         }
52     }
53 }

五、結果展示

六、對結果的解釋說明

兩次輸出的結果是一樣的,這是因為當第一次傳入參數的時候,instance 為空,執行上面的方法后,name的值就變成了“我是第一次傳過來的參數”,

當你第二次再次傳入參數時,由於靜態變量在內存中只有一個,只占一份兒,所以此時instance 已經不為空了,還會直接輸出第一個參數是的instance 值,

所以,不管你輸入幾次參數,輸出的結果都會是第一次輸出的那個instance 值,這也就是單例模式的機制所在。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM