【问题标题】:Should I use singleton, static Class or `shared` for connecting to database from many classes?我应该使用单例、静态类还是“共享”从多个类连接到数据库?
【发布时间】:2017-10-27 08:36:03
【问题描述】:

我正在编写连接到数据库的应用程序。我需要能够使用来自许多类的数据库连接。

class Database
{
  auto MyConnection = new Connection("..."); // create connection

  void calc()
  {
    MyConnection.query("..."); // use it
  }
}

但我需要从每个班级访问MyConnection?我应该做Databasestatic 吗?或者也许我应该使用单例模式?还是将MyConnection 设为shared

例如,配置呢?例如shared 是个好主意吗?

或者例如,我可以在 main 之前全局声明连接语句吗?喜欢:

MySQLPool MyConnection;

void main()
{
//...
}

然后从 static this() { } 或从 DB 类启动 MyConnection

【问题讨论】:

  • 为什么不传递Database呢?看起来工作量很大,但最终你的代码会变得更好。

标签: database class singleton d static-classes


【解决方案1】:

查看此处描述的存储库模式:http://web.archive.org/web/20150404154203/https://www.remondo.net/repository-pattern-example-csharp/

您应该考虑应用程序的架构。如果您采用这种方法,那么我将有一个名为 db 的类(不是静态的,也不是单例的),其方法如下:

Read
Scaler
Execute
Insert
etc 

您的存储库层应该与您的域层分开。

根据我的经验,这使代码可测试。

【讨论】:

    猜你喜欢
    • 2011-01-05
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多