我创建了一个单例类,这个类返回一个数据库连接.所以我的问题是这个连接也是满足单身人士的标准?
如果不,我怎么可以让它单身.
这是代码.
如果不,我怎么可以让它单身.
这是代码.
public sealed class SingletonDB { static readonly SingletonDB instance = new SingletonDB(); static sqlConnection con =new sqlConnection(ConfigurationManager.ConnectionStrings["mydb"].ConnectionString); // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit static SingletonDB() { } SingletonDB() { } public static SingletonDB Instance { get { return instance; } } public static sqlConnection GetDBConnection() { return con; } }
解决方法
你的单身人士还在休息.
就单身形象而言,请参见Jon Skeet的非常好的详细描述:http://www.yoda.arachsys.com/csharp/singleton.html
对于sqlConnection对象使用Singleton是一个非常糟糕的主意.没有理由这样做.
如果您尝试避免“新的sqlConnection()”或“connection.Open()”的性能命中,那么真的没有任何性能打击,因为在后台连接池.连接池处理昂贵连接的打开/关闭.不是sqlConnection对象.
您将无法同时使用连接打开多个sqlDataReaders / Commands,如果您尝试与多个线程共享相同的连接对象,将会遇到线程阻塞问题.
单身人士模式是最多使用和滥用的模式,您可能没有注意到单身人士的许多副作用.非常好的谈论这里的单身人士的危险http://www.youtube.com/watch?v=-FRm3VPhseI