基于靜態(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)方法
相關文章
c# AES字節(jié)數(shù)組加密解密流程及代碼實現(xiàn)
這篇文章主要介紹了c# AES字節(jié)數(shù)組加密解密流程及代碼實現(xiàn),幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-11-11
C# 如何在WINForm程序中創(chuàng)建XML文件
這篇文章主要介紹了C# 如何在WINForm程序中創(chuàng)建XML文件,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下2021-02-02

