2011-04-10 200 views
4

我已經使用了很多的數據訪問層(DAL),如靜態方法:靜態方法

public static DataTable GetClientNames() 
{ 
    return CommonDAL.GetDataTable("...."); 
} 

但我發現,一些開發商不喜歡裏面的靜態方法的想法DAL。我只需要一些理由在DAL中使用或不使用靜態方法。

感謝

託尼

回答

3

從純粹主義者的角度來看,這違反了各種最佳實踐(比如,依賴於實現,緊耦合的,不透明的相關性等)。我自己也會這樣說,但最近我傾向於採用更簡單的解決方案,而不會在「企業化」功能和流行語中潛水太多。因此,如果您可以像這樣編寫代碼就可以了,如果這種架構允許快速開發並且可以測試,並且最重要的是,可以解決您的業務問題 - 它就好。

+0

我在另一個項目中再次發現相同的問題。我認爲靜態DAL是反對OOP的基本思想,它不是很好的規模。我也認爲添加IOC容器可以避免這種靜態DAL。 – 2015-07-20 19:56:52

1

如果我不得不選擇一個不使用靜態方法的原因,那將會限制你編寫單元測試的能力。例如,爲你的DAL創建模擬將會變得更加困難,因爲沒有一個實際的接口來編碼,只是一堆靜態方法。如果/當您決定採用需要接口來支持IoC,依賴注入等的框架時,這會進一步限制您。

+0

這也是非常好的一點,我今天剛剛與IOC發現了這個問題。 – 2015-07-20 19:57:54

0

這就是Unit of Work,只是靜態的,不是嗎?

+0

我們需要從DB讀取客戶端名稱,並且可以說它是靜態的。但即使實例調用最終由CLR靜態調用。不知道何時使用靜態調用以及何時使用實例調用。 – 2011-04-11 16:03:35

+0

@Tony:你的數據來源是什麼? ORM?還有別的嗎? – abatishchev 2011-04-11 19:26:21

+0

數據保存在SQL服務器中並綁定使用的數據表。沒有使用ORM。 – 2011-04-12 14:25:00