我已閱讀關於何時使用靜態類以及何時推薦使用實例類的文章。不過,我的印象我的下面的例子有點落在之間:我應該在這種特定情況下使用靜態或實例類嗎?
- 沒有類實例是需要的,存儲狀態在AppDomain中的成員之間共享。
- 應該可以從AppDomain中的不同類實例訪問狀態。
- 不需要抽象或覆蓋。
所以,我的問題是:我應該繼續使用它作爲靜態還是使用單例概念更好?
public static class SubscriptionManager
{
private static Dictionary<string, string> Repository { get; set; }
static SubscriptionManager()
{
Repository = new Dictionary<string, string>();
}
public static void Subscribe(string key, string value)
{
if (Repository.ContainsKey(key))
Repository[key] = value;
else
Repository.Add(key, value);
}
public static void Unsubscribe(string key, string value)
{
if (Repository.ContainsKey(key))
Repository.Remove(key);
}
public static string GetSubscription(string key)
{
if (Repository.ContainsKey(key))
return Repository[key];
else
return "";
}
}
順便說一句,你不需要任何'ContainsKey()'檢查。對於'GetSubscription()',使用'TryGetValue()';在別處,總是調用'Remove()'或setter。 – SLaks
如果存儲庫字典是你想要使用的每個地方的一些數據,我認爲它是可以的。 –
@ user2675751,是的,靜態成員提供的功能依賴於存儲的狀態,必須可以在同一個AppDomain中通過多個不同的**類實例訪問。我基本上覺得我留下了兩個選擇,傳遞實例和靜態類。 –