您的代碼是靜態工廠方法的典型示例。
工廠模式是Software Design Patterns的一部分,它是軟件設計中給定上下文中常見問題的一般可重用解決方案。我可以建議你閱讀Head First Design Patterns這是一本非常好的入門書籍,以瞭解設計模式。
夫婦的有關您的代碼的建議:
- 使工廠方法靜態的,它不使用任何實例變量等
- 沒有關係,但你並不需要使用局部變量在你的工廠方法中,你可以直接返回連接。
現在你的方法是這樣的:
static SqlConnection CreateConnection(){
return new SqlConnection(ConfigurationManager.ConnectionStrings["IMS"].ConnectionString);
}
你可能要檢查的ConnectionStrings [ 「IMS」]是調用的SqlConnection的構造函數之前空。此類不需要進一步的錯誤處理,因爲它不會啓動連接。
比方說,你想在同一個方法返回一個打開的連接和處理連接錯誤:
static SqlConnection CreateConnection()
{
if (ConfigurationManager.ConnectionStrings["IMS"] == null)
{
throw new Exception("Connection string not found in the configuration file.");
}
var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["IMS"].ConnectionString);
try
{
sqlConnection.Open();
}
catch (Exception exception)
{
throw new Exception("An error occured while connecting to the database. See innerException for details.", exception);
}
return sqlConnection;
}
如果你願意,你可以創建自己的異常類稍後處理這些異常。見ASP MVC N-Tier Exception handling。如果發生異常,您也可以返回null,但首先請檢查「Is returning null bad design?」。
你好whytheq你想避免在您的服務冗餘碼? – 2012-07-27 12:43:45
我想避免重複這一行'SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings [「IMS」] .ConnectionString);'在我的代碼 – whytheq 2012-07-27 12:47:08
很多地方我在我的博客 – 2012-07-27 12:52:42