我正在爲一家小公司開發一個簡單的內部ASP.NET應用程序。我設計了數據訪問層,因此它與數據庫無關。這是否匹配任何已知的設計模式?
我有以下:
- IDataHelper - 要求 方法如FillDataTable(), 的ExecuteNonQuery()等
- MySqlHelper接口 - 用工具IDataHelper 爲MySQL,目前唯一支持的數據庫我支持 。
- 靜態數據訪問類 - 封裝數據訪問方法爲 不同部分的應用程序。他們將 的IDataHelper方法調用到 執行查詢。
最後,我有一個靜態類,它爲數據訪問類創建一個IDataHelper來調用。將來它將根據配置文件中指定的數據庫創建適當的幫助程序。現在它只是硬編碼來創建MySqlHelper:
public static class DataHelperContainer
{
private static IDataHelper dataHelper;
public static IDataHelper DataHelper
{
get { return dataHelper; }
}
static DataHelperContainer()
{
string connectionString = ConfigurationManager
.ConnectionStrings["myapp"].ConnectionString;
// Support for other databases will be added later.
dataHelper = new MySqlHelper(connectionString);
}
}
我的問題是:
- 我應該怎麼命名的? 「DataHelperContainer」好像不是 ,因爲這意味着某種 的列表。
- 這是一個好還是壞的設計?如果 這很糟糕,它的缺點是什麼?
- 這是類似的任何已知的設計 模式?它可以重構爲 是否符合?它似乎很像工廠,但我不確定。
對不起,關於很長的文章和多個問題。 :)
謝謝!
我敢說沒有完全理解這個問題? http://en.wikipedia.org/wiki/Inner-platform_effect – 2010-11-23 22:23:20