我已经阅读了很多关于使用静态方法的相互矛盾的意见,这让我很头疼。考虑以下:
在我的大多数 CRUD 应用程序中,我使用 SqlDataHandler 类来处理一个类(或在某些情况下是一组类)与数据库的交互。见下文:
public abstract SqlDataHandler
{
#region Properties
protected static string ConnectionString { get; set; }
#endregion
#region Methods
protected static DataTable GetDataTable(SqlCommand GetTableCommand)
{
...
}
#endregion
}
public AccountSqlDataHandler : SqlDataHandler
{
#region Methods
public static DataTable GetAccountHistory()
{
SqlCommand getAccountHistoryCommand;
...
return AccountSqlDataHandler.GetDataTable(getAccountHistoryCommand);
}
#endregion
#region Ctors
static AccountSqlDataHandler()
{
AccountSqlDataHandler.ConnectionString = "Connection string for account database";
}
#endregion
}
public Account
{
#region Properties
public List<HistoryItem> AccountHistory
{
get
{
List<HistoryItem> accountHistory;
accountHistory =
this.getItemsFromDataTable(AccountSqlDataHandler.GetAccountHistory());
return accountHistory;
}
}
#endregion
}
正如我所看到的,如果我使用成员方法,那么我必须每次都创建一个 AccountSqlDataHandler 实例,或者在 Account 类中创建一个 AccountSqlDataHandler 成员。我认为这样做没有任何优势,但从我所读到的内容来看,这是一个优势。在我盲目地改变我的方法之前,我想了解它是什么。