我正在创建一个示例应用程序以一起了解存储库和工厂方法模式,因为将在更大的项目中使用。
我想要实现的是能够使网站使用不同的 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
}
但我能感觉到有很多设计错误希望你能帮助我找出更好的设计。