仓库模式方法的标准化
- 论坛
- 仓库模式方法的标准化
27 浏览
仓库模式方法的标准化
我只是想找到“仓储模式”的正确定义。我最初的理解非常简单:
- 将业务对象与数据对象分离
- 在数据访问层中标准化访问方法
我真的见过两种不同的实现,但网上没有正式的例子,我见过的都藏在书里。实现1:
public Interface IRepository{ List GetAll(); void Create(T p); void Update(T p); } public interface IProductRepository: IRepository { // 如果需要,还可以添加扩展方法 List GetProductsByCustomerID(); }
实现2:
public interface IProductRepository { ListGetAllProducts(); void CreateProduct(Product p); void UpdateProduct(Product p); List GetProductsByCustomerID(); }
注意第一种实现是泛型的Get/Update/GetAll等,第二种更像我所定义的“DAO”。两者都从数据实体中抽取出来。我喜欢这一点,但是我可以用简单的DAO做到同样的事情。然而,我认为第二个实现中的标准化访问操作很有价值,如果你在整个企业范围内实施,人们将很容易知道仓储的访问方法集合。如果两者都正确,为什么会有人选择实现2呢?Rhino有一篇关于实现1的好文章,当然微软有一个模糊的定义,实现2的例子在这里。