基本上我有两个价值对象,每个都代表价格。规则去一个价格不能大于其他。可能存在仅指定其中一个的情况。
如何执行此规则以及在哪里?保留两个独立的物体,当一个物体被构造时,传递给它的另一个听起来有点奇怪,因为反向规则必须应用于其他。我不想将这两个值都保存在一个对象中,因为当我使用这些值时,我不需要将它们耦合。
答案 0 :(得分:0)
价值对象很少独立存在,通常在负责强制执行不变量的实体内汇总。
"我不想将这两个值保留在一个对象中,因为我不需要 当我使用这些值"
时,它们会被耦合
如果存在跨越这些值的业务规则,那么它们可能应该是同一聚合的一部分。这些值本身不会直接耦合到另一个,但聚合将保持两者。
答案 1 :(得分:0)
规则去一个价格不能大于其他。可能存在仅指定其中一个的情况。
如果这两个价格真的一起变化并像price-from / price-to
一样变化,那么也可以使用PriceRange
值对象来检查这些规则。
public class PriceRange
{
public PriceRange(Price from, Price to)
{
// Check all rules here
From = from;
To = to;
}
public Price From { get; }
public Price To { get; }
}
检查聚合根中的规则可能更好