是否有办法在用户更新数据库时强制单例实例重置?
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
}
}
Run Code Online (Sandbox Code Playgroud)
那么,我在更新数据库时重置_list?
谢谢!
最简洁的答案是不.
你能得到的最接近的是重置字典:
public void Reset(){ _list.Clear(); }
Run Code Online (Sandbox Code Playgroud)
现在答案很长......
你为什么使用单身人士?我认为这是因为你阅读了GoF设计模式书并认为它看起来像一个有趣的想法.单例模式打破了面向对象设计的每一个原则.你不能从它们继承,你打破封装,没有多态性的机会.
在您发布的示例中,您已将您的班级(字典)的内部工作交给任何想要它的人.如果他们改变了怎么办?这如何与线程一起使用?
如果你只想在你的应用程序中使用一个类的实例,那么只调用new一次,或者使用具有单例生活方式的依赖注入容器,但这完全是另一个主题.
呃,我讨厌单身人士.