在我的win表单应用程序中,我有一个名为DataServices
的服务类,它为CRUD
操作提供了所有其他客户端类(大约12个类)的数据库访问服务。 (我使用的是ADO.net)。这个类有很多公共方法。以下是此类实现的接口的一部分。
interface IDataService
{
BankAccount GetByACNo(string acNo);
bool InsertAccount(IBankAccount ba);
bool UpdateAccount(IBankAccount ba);
bool InsertClient(IClient newClient);
Client GetClientByCID(int CID);
Client GetClientByName(string clientName);
void UpdateClient(IClient changedClient);
DataTable LoadClientNamesAndCID();
DataTable LoadPointNamesAndPID();
bool InsertPoint(IPoint newPoint);
Point GetPointByPID(string id);
bool UpdatePoint(IPoint point);
Point GetPointByName(string id);
List<string> GetPIDs(string firstLetterOfPointName);
// other methods...
}
由于这些方法没有使用任何实例变量,所以最好是制作所有方法static
吗?
答案 0 :(得分:1)
来自MSDN http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx
&#34;静态类和类成员用于创建数据和 可以在不创建类实例的情况下访问的函数。 静态类成员可用于分隔独立于任何对象标识的数据和行为: 无论对象发生什么,数据和功能都不会改变。 当类中没有依赖于对象标识的数据或行为时,可以使用静态类。&#34;
问题
1)这取决于你如何真正调用你的方法, 如果您没有任何理由创建类的实例,则可以使用静态方法。 这种方法没有错。
2)如果正确设置了静态方法,则不成问题。 每个用户,无论方法是否为静态,都会对基础数据源(XML,DB等)产生相同的影响
虽然一般设计有所不同 - 静态方法几乎总是线程安全的(即你应该让它们成为线程安全的) 实例方法通常不必(尽管你应该记录你班级的线程安全性)。
希望这会有所帮助