【发布时间】:2011-11-15 07:08:23
【问题描述】:
我目前有一个名为“SqlData”的类,其中包含连接到我的 MS-SQL 数据库所需的所有方法。
它包含用于插入、删除和更新不同类型表的方法 - 因此在我的 WPF 应用程序的许多 Windows 中使用。
假设我将近 90% 的 WPF-Windows 都在调用我的 SqlData 方法中的至少三个方法来加载、插入和更新不同的记录...
目前,我需要在每个窗口中实例化我的 Sql-Class - 因此我正在考虑将整个 Class 设为静态,这样我就不需要每次都实例化它?
但我也读过在与 Web 服务或数据库等外部服务器通信时不要使用静态类。
你能给我一些关于我应该怎么做的建议吗?
以下是我的类中使用的一些方法(bool 返回 true,当语句完成时,否则为 false):
公共数据表 GetAllSomething(DataTable _data)
public bool WriteSomething(Object something, out int insertedId)
public bool DeleteSomething(Object something)
谢谢!
【问题讨论】:
-
尽管我认为人们应该避免使用静态类,但我不得不说有些情况实际上需要它们。例如,对于我的游戏,我有一个在运行时创建和加载的数据库类。该数据库包含所有的武器、物品、能力、事件、脚本、模型等。这个类被我的游戏中的许多不同的类所使用,通过构造函数传递对它的引用将非常丑陋且完全无法维护。通过使用单个静态 GameDatabase,我允许我的整个引擎以一种方式全局访问数据,而无需传递...
-
...一千个引用只是因为一个类需要查找一次。我最初尝试过,不知道为什么我什至尝试过,因为这太荒谬了。每个类都需要一个额外的变量来保存引用,然后出现了关于如何将引用传递给构造函数管道的问题,即使该方法只需要通过查找等做一件小事。正如你在我的示例中看到的那样,静态类实际上是唯一可维护的解决方案。