【发布时间】:2014-06-10 16:43:02
【问题描述】:
由于一些混乱,我在实现存储库模式时遇到了一些麻烦。
据我所知,存储库的行为应该类似于内存中的对象集合,所以如果我说:
$users = new UserRepository(new UserMapper);
$users->findAll();
用户存储库将加载并返回一组用户实体。现在我可以使用它们来读取数据,或者可以更新任何特定实体上的数据,并调用存储库上的 save() 方法,该方法将利用 Mapper 将加载的实体保存回数据源,并进行更新已应用。
我想知道这是否是正确的理解。
add() 方法应该将实体直接添加到数据源,还是只添加到存储库中的集合?
remove() 也是如此;此方法应该从数据源中删除实体,还是仅从存储库中删除。
混淆源于我在教程中看到的一些实现既有 add()/remove() 方法,也有 save()/delete() 方法。这是正确的做法吗?
【问题讨论】:
-
IDDD(Implementing Domain Driven Design)有一整章是关于repository的,特别考虑repositories的接口和背后的合理性。我强烈建议您阅读该章节,因为它直接适用于您的问题。
标签: domain-driven-design repository-pattern ddd-repositories