是否有办法在用户更新数据库时强制重置单例实例?
public class Example{
private Dictionary<int, string> _list;
private Example(){
_list = new Dictionary<int, string>();
//Get data from database here and add the data to _list
}
private class Nested{
static Nested(){}
internal static readonly Example Instance = new Example();
}
public static Dictionary<int, string> GetExample(){
return Nested.Instance._list
}
}
那么,我应该在更新数据库时重置 _list 吗?
谢谢!
最佳答案
简短的回答是:不。
最接近的是重置字典:
public void Reset(){ _list.Clear(); }
现在是长答案...
为什么要使用单例?我假设这是因为您阅读了 GoF 设计模式书并认为它看起来是一个有趣的想法。单例模式打破了面向对象设计的每一个原则。你不能从它们继承,你破坏了封装并且没有多态性的机会。
在您发布的示例中,您将类(class)的内部运作(字典)交给任何需要它的人。如果他们改变它怎么办?这将如何与线程一起工作?
如果您只想在您的应用程序中使用您的类的一个实例,那么只需调用一次 new,或者使用具有单例生活方式的依赖注入(inject)容器,但这完全是另一个话题。
呃,我讨厌单例。
关于c# - 如何在 C# 中重置单例实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5198149/