我即將建立一個良好的舊ado.net方式的數據訪問層。傳統上,我會根據簡單的存儲庫模式構建dal。但是這次我想嘗試抽象工廠模式,因爲我最近在一篇文章中已經閱讀了這個模式。實現抽象工廠模式的正確方法?
所以我在這裏嘗試編碼與抽象工廠模式的dal。首先讓我解釋我到目前爲止所得到的結果。之後我想知道的是,我的方法是否是實施這種模式的正確方式,以及存儲庫方法的優點。
所以我寫了下面的類:
public abstract class Db
{
//this is class will contain methods like:
//public abstract IDbConnection CreateConnectionInstance();
}
public class SqlDb : Db
{
//this is class will contain methods like:
//public override IDbConnection CreateConnectionInstance()
//{
// ... return new SqlConnection();
//}
}
public class OracleDb : Db
{
}
public class MockupDb : Db
{
}
//this class generates the fitting provider but does not have a base (is this correct?)
public static class DbFactory
{
public static Db CreateInstance(DbProviderType dbProviderType)
{
Db db = null;
switch (dbProviderType)
{
case DbProviderType.Oracle:
db = new OracleDb();
break;
case DbProviderType.Sql:
db = new SqlDb();
break;
case DbProviderType.Mockup:
db = new MockupDb();
break;
default:
break;
}
return db;
}
}
所以我的問題在短期: 1)這是一個正確實施抽象工廠模式的? 2)什麼可以做得更好? 3)從基類繼承的不同的存儲庫類有什麼優勢?
Thx很多傢伙。
如果您需要更多關於我的代碼的信息,請告訴我。但現在沒有更多的時間了!