仓库模式方法的标准化

27 浏览
0 Comments

仓库模式方法的标准化

我只是想找到“仓储模式”的正确定义。我最初的理解非常简单:

  • 将业务对象与数据对象分离
  • 在数据访问层中标准化访问方法

我真的见过两种不同的实现,但网上没有正式的例子,我见过的都藏在书里。实现1:

public Interface IRepository{
      List GetAll();
      void Create(T p);
      void Update(T p);
}
public interface IProductRepository: IRepository {
      // 如果需要,还可以添加扩展方法
       List GetProductsByCustomerID();
}


实现2:

public interface IProductRepository {
      List GetAllProducts();
      void CreateProduct(Product p);
      void UpdateProduct(Product p);
      List GetProductsByCustomerID();
}

注意第一种实现是泛型的Get/Update/GetAll等,第二种更像我所定义的“DAO”。两者都从数据实体中抽取出来。我喜欢这一点,但是我可以用简单的DAO做到同样的事情。然而,我认为第二个实现中的标准化访问操作很有价值,如果你在整个企业范围内实施,人们将很容易知道仓储的访问方法集合。如果两者都正确,为什么会有人选择实现2呢?Rhino有一篇关于实现1的好文章,当然微软有一个模糊的定义,实现2的例子在这里

0