单例设计模式优先用于获取数据库连接

Tho*_*mas 2 c# oop singleton

我看到许多开发人员为数据库连接创建了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");
}
Run Code Online (Sandbox Code Playgroud)

nvo*_*igt 7

我从这堂课里看不出任何好消息.如果你想要这样(并且我不赞成它)你就没有比一堆静态方法更好的了.单身实例会有什么用处?你如何将SqlConnection变量放在一个using块中?

对于想要全局变量的人来说,我认为单例是一种过度使用的模式,但是阅读一本提到全局变量不好的书.现在他们发现另一本书说"单身人士"是一种模式,模式是"好的",他们最终有借口拥有全球性.

作为全局变量是单身人士的副作用.如果你使用它来产生副作用,那就不能很好地利用这种模式了.我会说这是一种虐待.

单身人士几乎不可能进行单元测试.这个甚至不是线程保存,并且对非单例没有任何用处.所以从我的角度来看......删除课程.

有多少人使用该应用程序是无关紧要的.每个人都有它自己的过程,它也有自己的单身,尽管可能很糟糕.

  • 单身人士也被称为"反模式". (2认同)