是否有一些经验法则,在设计领域模型时,在哪个方向进行关联?
例如,我们在库存中有产品。产品的库存状态是一种相当复杂的数据结构,包含产品的多种变体的枚举,无论是在库存中,缺货还是可预订。因此,我们制作与产品相关的库存状态的单独对象。 现在的问题是,如果产品对象应该引用它的库存状态,或者库存状态具有对特定产品的引用。
首先解决方案感觉,产品知道它的库存状态并不是真正关心的问题。产品只是一种产品,也许我们应该在不同的环境中操纵它们,而不需要放养。另一方面,作为根的股票状态感觉很尴尬,因为在考虑股票时,首先我们认为关于股票中的产品。
如何确定哪个实体充当关联的根?
答案 0 :(得分:0)
您假设两个概念紧密耦合,这意味着它们属于同一个有界上下文。这意味着两种模型都相互依赖 - 这可能是您不想要的,因为它会导致您可能不想要的复杂性。毕竟,你自己提到了这一点:"产品知道它的库存状态"并不是产品的真正关注点。那么为什么要添加它的关系呢?
您可以将它们视为两个独立的有界上下文 - 它们之间没有直接关系,除了链接这两个概念的产品ID。
答案 1 :(得分:0)
导航是你应该忽略的东西,因为它纯粹是人为的东西。如果两件事情相关,他们就会彼此了解。行动和反应。重力。爱。努力寻找只在一个方向起作用的东西。敲诈。间谍镜子。
引入导航性确实只对实施阶段有意义。你试图分离东西以减少依赖性,现在是好的。而你在这里实际做的是将角色名称附加到导航。这反过来使箭头变得多余。
TL; DR;只是不要在UML建模中使用箭头。将它们留给Powerpoint League。
答案 2 :(得分:0)
首先解决方案感觉,产品知道它的库存状态并不是真正关心的问题。产品只是一种产品,也许我们应该在不同的环境中操纵它们,而不需要放养。另一方面,作为根的库存状态感觉很尴尬,因为在考虑库存时,首先我们考虑库存中的产品。
当我们考虑购物车时,我们考虑购物车中的产品。然而,大多数情况下,购物车物品的有用方法是参考产品。
我的猜测是你需要更多地考虑Stock
,特别是它的生命周期;这两种不同想法的生命周期是如何紧密耦合的?如果您遇到单个Product
与两个不同Stocks
有关系的情况(过去一个,现在一个;此位置一个,该位置另一个),则存储该关系在产品中是不对的。