这是一个更好的办法,首先创建的子实体,然后传递到聚合根添加它们,或者有聚合根创建它们?例如:将子实体添加到聚合根的建议方法是什么?
Order.AddOrderLine(new OrderLine(product, quantity, ...));
或者
Order.AddOrderLine(product, quanity, ...);
这是一个更好的办法?我敢肯定,这纯粹是主观的,但我想看看哪个有更多的优点vs缺点。
这是一个更好的办法,首先创建的子实体,然后传递到聚合根添加它们,或者有聚合根创建它们?例如:将子实体添加到聚合根的建议方法是什么?
Order.AddOrderLine(new OrderLine(product, quantity, ...));
或者
Order.AddOrderLine(product, quanity, ...);
这是一个更好的办法?我敢肯定,这纯粹是主观的,但我想看看哪个有更多的优点vs缺点。
好了,所以基本上我的意见是,你应该之前创建一个对象,因为:
对象的创建本身就是一个独立的关注,它可以是一个相当的方式复杂。如果,例如,OrderLine
的构造将在以后改变,你需要改变Order
类型了。这是不好的,因为你将需要更改Order
只是因为在OrderLine
一些变化。所以Order
根的接口不应该依赖于OrderLine
。
第二种方法可能很难测试,如果你的方法会包含一些额外的逻辑exept的只有调用this.OrderLines.Add(orderLine);
编辑 和我的一个朋友讨论之后,我来到了意见如下:
排序根应该控制他的孩子的生命期,因为这会更清楚地为其他人使用这个API和wi将最大限度地减少使用不当的可能性。而且还会更好地揭示意图。
使用这种方法也让我们不要担心验证输入的订单行,因为如果我们有责任OrderLine的创造,然后我们就可以正确地创建它。
现在,这是有用的东西。从未注意到耦合。 – 2011-01-24 21:21:19
为什么他们相互排斥? – 2011-01-24 19:53:49