我已阅读关于何时使用静态类以及何时推荐使用实例类的文章。不过,我的印象我的下面的例子有点落在之间:我应该在这种特定情况下使用静态或实例类吗?
- 没有类实例是需要的,存储状态在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中通过多个不同的**类实例访问。我基本上觉得我留下了两个选择,传递实例和静态类。 –