PHP设计模式工厂,存储库和......?

时间:2016-08-17 13:52:45

标签: php laravel oop repository-pattern factory-pattern

我们有工厂来创建复杂的对象。 (对于makin'的东西)

我们有存储库可以找到它们。 (对于findin'的东西)

我们有什么更新它们? (对于改变事物而言)

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

2 个答案:

答案 0 :(得分:2)

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

因此,每个数据库操作都属于存储库。此外,存储库不得与数据库通信,也可以使用XML,CSV或API作为数据源。但这并不重要,因为您正在与存储库进行通信。存储库处理随后发生的所有事情。

您可以使用另一个更改存储库,您的程序可以正常运行,因为存储库都实现了相同的接口。你不再喜欢那个MySQL数据库了,老式的CSV好多了?只需替换使用过的存储库即可。

查找包含存储库的条目只不过是SELECT语句,那么为什么不UPDATEDELETE呢?

进一步阅读MSDN

web.archive.org

上找到了很好的解释和示例

答案 1 :(得分:1)

我认为这取决于方法。

以DDD为例,你说的是真的。存储库应该负责添加,查找和删除,因为它适用于集合,但是有一个问题,为什么它应该能够更新单个对象。

可以做些什么?我想我只会复制其他人所说的内容,所以我只想发帖回复:approach to removing save/update from repository

相关问题