在什么情况下我应该使用Singleton类?

ets*_*uba 5 .net c# oop design-patterns

作为这个问题的完全重复关闭.但重新开放,因为其他Singleton问题是一般用途而不是用于DB访问

我正在考虑将内部数据访问类设置为Singleton但是无法说服自己选择主要是因为除了方法中的局部变量之外,类没有状态.

毕竟设计这些类作为单身人士的目的是什么?
它是否保证对数据库的顺序访问是不可信的,因为大多数现代数据库可以很好地处理并发性?
是否能够重复使用单个连接,可以通过连接池来处理?或者通过运行单个实例来节省内存?

请赐教这个.

Fly*_*wat 3

我发现单例模式适合以下类:

  • 没有状态
  • 充满了基本的“服务会员”
  • 必须严格控制其资源。

数据访问类就是一个例子。

您将拥有接受参数并返回 DataReader 的方法,但您不会在单例中操作读取器的状态,您只需获取它并返回它。

同时,您可以采用可以在项目中传播的逻辑(用于数据访问)并将其集成到一个单独的类中,该类可以正确管理其资源(数据库连接),无论谁调用它。

话虽如此,Singleton 是在 .NET 完全静态类概念出现之前发明的,所以我对于是否应该采用一种方式持观望态度。事实上,这是一个很好的问题。

  • 小心:这仍然会给您带来麻烦。我工作过的一个地方在 winforms 应用程序中使用单例来进行您所说的数据访问,当他们需要转换为 Web 应用程序时,单例_杀死_性能,因为_所有_用户只能有一个连接。 (2认同)