把实际的存储和查询技术封装起来,仅为确实需要直接访问的聚合根提供仓储,让客户聚集于模型,把所有对象存储和访问的工作委托给仓储来完成
仓储的优点:
它们为客房提供了一个简单的模型,来获取持久对象并管理其生命周期
它们把应用和领域设计从持久技术,多种数据库策略甚至多种数据来源解耦出来;
它们传达了对象访问的设计决策
它们可以很容易被替换为哑实现,以便在测试中使用(通常使用一个内存中的集合)
仓储的关注点
抽象类型,仓储包含一个特定类型的所有实例
与客户解耦大有好处。可以自由修改仓储的实现和优化,便于测试
让客户来控制事务
工厂是创建新的对象,仓储是寻找旧的对象