Etz*_*tet 5 php oop design-patterns repository-pattern aggregation
我最近一直在将存储库模式视为一种在客户端代码所涉及的地毯上刷下所有持久性细节的方法。在阅读时,似乎[通常?]存储库负责聚合,而不仅仅是简单的类。
这对我来说很有意义,因为您可以有一个定义Posts的类和另一个定义Comments的类。由于这两者是密切相关的,因此这是合计的理想选择。但是,我将如何表示Users类及其与Posts的关系?
将用户与“ 帖子/评论”聚合在一起是有意义的,还是仅保留用户本身并仅通过良好的老式引用建立关联?
我曾尝试使用Google自己寻找答案,但我发现的许多示例都是独立的。即Posts / Comment或Order和OrderLine等。我找不到任何显示其他相关类如何组合在一起的东西。
尽管PHP或Java / C#可能是我希望使用这些思想的领域,但我没有将其应用于任何特定的东西。无论如何,我只是在探索并试图在我逃跑并创建怪物之前弄清楚其中的一些想法和概念。:)
感谢您的时间。
存储库模式的定义相当松散,不一定与聚合模式有任何关系。但是,如果您订阅 DDD 的做事方式,那么是的,存储库是聚合独有的。
所以让我们从 DDD 的角度来看看这个。DDD 表示聚合内的对象可以引用另一个聚合根,但聚合内的对象只能通过根访问。确定聚合的经验法则是删除根时应删除的内容。然而,DDD 比大多数方法更不鼓励使用关系,因为关系存在于域中,它不需要存在于域模型中,所以请记住这一点。
在您的情况下,当您删除帖子时,我假设您也会删除评论,但不会删除创建帖子的用户或对其发表评论的用户。因此,您在定义帖子/评论聚合时是正确的,但将用户分组到该聚合中是没有意义的。
作为自己的聚合体的用户可以包含与其所有帖子的关系,因为 Post 是聚合根。您还可以在 PostRepository 上实现此方法以获取给定用户的所有帖子。希望有帮助!
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |