我正在創建一個示例應用程序,以便共同瞭解存儲庫和工廠方法模式,因爲它們將用於更大的項目中。如何使用存儲庫模式和工廠方法模式來組織我的類/接口?
我想達到的目標是能夠使不同的ORM工具的網站工作。
例如,網站將有LINQ to SQL和Ado實體框架工作類,然後使用工廠方法將使用這些ORM之一「使用配置值」來加載數據庫對象中的數據。
我得到了什麼到現在是像下面
interface IRepository : IDisposable
{
IQueryable GetAll();
}
interface ICustomer : IRepository
{
}
public class CustomerLINQRepository : ICustomer
{
public IQueryable GetAll()
{
// get all implementation using linqToSql
}
public void Dispose()
{
throw;
}
public IRepository GetObject()
{
return this;
}
}
public class CustomerADORepository : ICustomer
{
public IQueryable GetAll()
{
// get all implementation using ADO
}
public void Dispose()
{
throw new NotImplementedException();
}
public IRepository GetObject()
{
return this;
}
}
// Filling a grid with data in a page
IRepository customers = GetCustomerObject();
this.GridView1.DataSource = customers.GetAll();
this.GridView1.DataBind();
////
public IRepository GetCustomerObject()
{
return new CustomerLINQRepository(); // this will return object based on a config value later
}
但我能感覺到有很多的設計錯誤希望你能幫助我找到答案,以獲得更好的設計。
我將它重命名爲「GetCustomerObject」,它應該檢查一個配置值並根據此值返回「CustomerLinqRepository」對象或「CustomerAdoRepository」對象,因此「GetCustomerObject」是Factory方法的創建者函數 – 2009-09-29 03:40:08