【发布时间】:2013-01-23 17:50:02
【问题描述】:
根实体可以将对内部实体的瞬时引用传递给外部对象,但条件是外部对象 操作完成后不要保留该引用
1)
a) 为什么 external object 在单个操作期间具有引用(对 internal entity )是可以接受的,但不能接受它持有在两次操作的持续时间内参考该参考?我的观点是,如果在两次操作期间坚持参考是不好的,那么在一次操作期间坚持参考可能同样不好?!
b) 假设SomeRootEnt 聚合根 将内部实体的瞬态引用 SomeIntEnt 传递给外部对象,应该如何外部对象 请求SomeIntEnt?通过在 root 上调用特定方法——例如SomeRootEnt.BorrowMeIntEnt(...) - 还是应该 root 直接将 internal entity 暴露为它的 property (例如 SomeRootEnt.SomeIntEnt )?
2)
a) 假设 SomeRootEnt root 将对 internal entity SomeIntEnt 的引用传递给 external object,而后者又进行了一些修改在SomeIntEnt 上,这是否意味着 root 无法对这些修改应用适当的不变逻辑(即 root 可以'不检查修改后的SomeIntEnt的完整性?
b) 同样,至少据我了解,root 也无法强制 外部对象 删除对内部实体的引用> 单次手术完成后?
谢谢
更新:
2a)
没错,这就是为什么最好确保通过 object 没有被修改,而是以不可变的方式使用。此外, 通过的实体仍然可以自行保持一定程度的完整性。
主要是聚合根(部分由传递的实体)还是外部对象(接收transient reference ) 以确保传递的 entity 不被修改?如果是后者,那么这个聚合的一致性真的不是由开发外部对象的人摆布吗?
2b)
正确,您有责任确保这一点。就像你一样 必须确保给定值对象是不可变的(如果需要) 必须考虑传递引用的完整性。
我认为在大多数情况下,外部对象有责任在操作完成后立即摆脱引用?
【问题讨论】: