聊聊如何使用單例模式

2021-10-25 15:30:46 字數 1683 閱讀 3636

單例模式,顧名思義就是只有乙個例項,並且她自己負責建立自己的物件,這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。下面我們來看下有哪幾種實現方式吧。

1、使用lock ,保證方法只有乙個執行緒可以進入。

/// /// 單例類

///

public class singleton

thread.sleep(2000);

console.writeline($"完成構造....");

}private static singleton instance = null;

private static readonly object singleton_lock = new object();

public static singleton createinstance()

}return instance;

}public static void donothing()

public void show()

show....");

}}

2、使用靜態建構函式,由clr呼叫,在型別第一次被使用前呼叫,且只呼叫一次。

/// /// 單例類

///

public class singletonsecond

thread.sleep(2000);

console.writeline($"完成構造....");

}private static singletonsecond instance = null;

/// /// 靜態建構函式,由clr呼叫,在型別第一次被使用前呼叫,且只呼叫一次!

///

static singletonsecond()

public static singletonsecond createinstance()

public static void donothing()

public void show()

show....");

}}

3、使用靜態字段,由clr呼叫,在型別第一次被使用前初始化,且只初始化一次。

/// /// 單例類

///

public class singletonthird

thread.sleep(2000);

console.writeline($"完成構造....");

}/// /// 靜態字段,由clr呼叫,在型別第一次被使用前初始化,且只初始化一次!

///

private static singletonthird instance = new singletonthird();

public static singletonthird createinstance()

public static void donothing()

public int inum = 0;

public void show()

show....");

}public void add()

}

1、需要生成唯一序列的環境。

2、需要頻繁例項化然後銷毀的物件。

3、建立物件時耗時過多或者耗資源過多,但又經常用到的物件。 

4、方便資源相互通訊的環境。

聊聊設計模式的單例模式

單例模式介紹 定義 乙個類只有乙個例項物件,提供乙個供系統全域性呼叫的入口。說明 對於一些需要保持一致的或者建立例項很耗資源的類,提供乙個單例物件,避免系統占用過多記憶體。單例模式是結構比較簡單的模式,但是深入來看卻非常複雜的模式。單例模式的結構 單例實現 根據例項的建立時間,分為餓漢模式和懶漢模式...

簡單聊聊設計模式之單例模式

開閉原則 黎克特制代換原則 依賴倒轉原則 介面隔離原則 迪公尺特原則 又稱最少知道原則 合成復用原則 優點 缺點 懶漢式 classname demo description todo 懶漢式,使用double checking雙重檢查以及volatile關鍵字保證執行緒安全以及禁止指令重排 aut...

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...