基于靜態(tài)Singleton模式的使用介紹
什么是靜態(tài)單例模式?
靜態(tài)單例模式(Static Singleton Pattern)是我在實踐中總結的模式,主要解決的問題是在預先知道某依賴項為單例應用時,通過靜態(tài)緩存該依賴項來提供訪問。當然,解決該問題的辦法有很多,這只是其中一個。
實現(xiàn)細節(jié)
/// <summary>
/// 靜態(tài)單例
/// </summary>
/// <typeparam name="TClass">單例類型</typeparam>
public static class Singleton<TClass> where TClass : class, new()
{
private static readonly object _lock = new object();
private static TClass _instance = default(TClass);
/// <summary>
/// 獲取單例實例
/// </summary>
public static TClass GetInstance()
{
return Instance;
}
/// <summary>
/// 單例實例
/// </summary>
public static TClass Instance
{
get
{
if (_instance == null)
{
lock (_lock)
{
if (_instance == null)
{
_instance = new TClass(); // must be public constructor
}
}
}
return _instance;
}
}
/// <summary>
/// 設置單例實例
/// </summary>
/// <param name="instance">單例實例</param>
public static void Set(TClass instance)
{
lock (_lock)
{
_instance = instance;
}
}
/// <summary>
/// 重置單例實例
/// </summary>
public static void Reset()
{
lock (_lock)
{
_instance = default(TClass);
}
}
}
應用測試
class Program
{
interface IInterfaceA
{
string GetData();
}
class ClassA : IInterfaceA
{
public string GetData()
{
return string.Format("This is from ClassA with hash [{0}].", this.GetHashCode());
}
}
static void Main(string[] args)
{
string data1 = Singleton<ClassA>.GetInstance().GetData();
Console.WriteLine(data1);
string data2 = Singleton<ClassA>.GetInstance().GetData();
Console.WriteLine(data2);
Console.ReadKey();
}
}
測試結果
- .Net 單例模式(Singleton)
- 五種單件模式之Singleton的實現(xiàn)方法詳解
- C#多線程Singleton(單件)模式模板
- php設計模式 Singleton(單例模式)
- javascript 單例/單體模式(Singleton)
- .NET c# 單體模式(Singleton)
- Python設計模式之單例模式實例
- Python設計模式之觀察者模式實例
- Python設計模式之代理模式實例
- python中getattr函數(shù)使用方法 getattr實現(xiàn)工廠模式
- Windows 配置Apache以便在瀏覽器中運行Python script的CGI模式
- Python下singleton模式的實現(xiàn)方法
相關文章
舊項目升級新版Unity2021導致Visual?Studio無法使用的問題
在項目開發(fā)過程中,不可避免的會升級開發(fā)工具。這次我在舊項目版本升級到新版Unity2021.2.x時,出現(xiàn)Visual?Studio無法定位等問題,這里我給大家分享下解決方法,舊項目升級新版Unity2021導致Visual?Studio無法使用的問題,需要的朋友可以參考下2021-12-12WPF實現(xiàn)帶模糊搜索的DataGrid的示例代碼
這篇文章主要為大家詳細介紹了WPF如何實現(xiàn)帶模糊搜索的DataGrid,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2023-02-02