我看到许多开发人员为数据库连接创建Singleton类。我只想知道应用程序将被许多用户使用是好是坏。如果不好,请讨论上述模式可能发生的所有不良情况。
public class ConnSingleton
{
private static ConnSingleton dbInstance;
private readonly SqlConnection conn = new SqlConnection(@"Data Source=127.0.0.1;database=soa;User id=sa1;Password=sa1;");
private ConnSingleton()
{
}
public static ConnSingleton getDbInstance()
{
if (dbInstance == null)
{
dbInstance = new ConnSingleton();
}
return dbInstance;
}
public SqlConnection GetDBConnection()
{
try
{
conn.Open();
Console.WriteLine("Connected");
}
catch (SqlException e)
{
Console.WriteLine("Not connected : "+e.ToString());
Console.ReadLine();
}
finally
{
Console.WriteLine("End..");
// Console.WriteLine("Not connected : " + e.ToString());
Console.ReadLine();
}
Console.ReadLine();
return con;
}
}
public static void Main(string[] args)
{
ConnSingleton cs = ConnSingleton.getDbInstance();
cs.GetDBConnection();
Console.WriteLine("Connection Established");
}
我看不到这堂课有什么好处。如果您这样想(但我不赞成这样做),您将不会从一堆静态方法中受益。单例实例有什么用处?您如何将SqlConnection变量放在using
块中?
我认为单例对于想要全局变量的人来说是一种过度使用的模式,但是读了一本书提到全局变量是不好的。现在,他们找到了另一本书,指出“ Singleton”是一种模式,而模式是“良好”,他们终于有了借口来拥有全球性的借口。
作为全局变量是单例的副作用。如果将其用于副作用,则不是很好地使用该模式。我会说这是一种虐待。
单例几乎不可能进行单元测试。这甚至没有线程保存,并且在非单例上也没有任何用处。所以从我的角度来看...删除该类。
多少人使用该应用程序无关紧要。每个人都有自己的过程和自己的单身人士,可能会很糟糕。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句