Myl*_*Rip 9 domain-driven-design
在搜索网络时,我遇到了Eric Evans的书中的一系列规则,这些规则应该针对聚合强制执行:
这一切似乎在理论上很好,但我看不出这些规则将被强制在现实世界中.
以规则3为例.一旦根实体为外部对象提供了对内部实体的引用,那么什么是使该外部对象保持超出单个方法或块的引用?
(如果执行此操作是特定于平台的,我将有兴趣了解如何在C#/ .NET/NHibernate环境中强制执行此操作.)
我不认为你应该让聚合给你的外部代码访问它的实体.
你告诉你的汇总你想要发生什么,它会处理它.
如果我们有一个聚合:汽车.我们不关心汽油和轮子,我们只是开车.我们向汽车询问有关事情的事情并且在不提及内部参考的情况下回答.
我们问:我们有汽油吗?是.不:给我坦克物品,这样我就可以检查一下我们是否有汽油.
Szy*_*ega -1
我最喜欢的实施 DDD 模式和实践的方式是不断地教育人们了解他们的价值。然而,有时我拥有更严格的工具。
我自己还没有这样做,但在我看来,FluentNHibernate 可能是强制聚合属性的一个很好的工具。
您的示例可以通过使用“IAggregateRoot”标记接口标记所有聚合根和使用“IEntity”标记接口标记非根实体来实现。然后,您的自定义 FNH 约定将检查标记为 IEntity 引用实体 IEntity 的实体,并在找到时发出错误信号(例如引发异常)。
这有什么意义吗?
| 归档时间: |
|
| 查看次数: |
1599 次 |
| 最近记录: |