PHP设计模式工厂、存储库和…


PHP design patterns Factories, Repositories and...?

我们有用于创建复杂对象的工厂。(用于制作东西)

我们有查找它们的存储库。(For find ' stuff)

我们有什么来更新它们?(用于更改内容)


似乎是拼图中缺失的一块?我认为它不属于存储库,因为这会破坏单一责任……

更新属于存储库的实体(以及数据库)。存储库本身是数据库本身和程序之间的一个层。

因此,每个数据库操作都属于存储库。此外,存储库不能与数据库通信,它也可以使用XML、CSV或API作为数据源。但这并不重要,因为您正在与Repository通信。Repository处理之后的所有操作。

你可以用另一个仓库来改变仓库,你的程序就不会有任何问题了,因为仓库都实现了相同的接口。你不喜欢MySQL数据库了,老式的CSV更好?只需替换使用过的Repository,就完成了。

在存储库中查找条目并不比SELECT语句更简单,那么为什么不使用UPDATEDELETE呢?

MSDN的进一步阅读

在web.archive.org上找到了一个很好的解释和例子

我认为这取决于方法。

以DDD为例,你说的是真的。Repository应该负责添加、查找和删除,因为它可以在集合上工作,但是为什么它应该能够更新单个对象呢?

可以做什么?我想我只会复制别人说的话,所以我只会发布链接来回答:从存储库中删除保存/更新的方法