DDD正是针对你的业务流程来开发的,如果你把Customer作为根,那证明在业务调用上,每次都必须先获取Customer,再从其中获得CreditCard。
如果操作上需要单独对CreditCard进行修改,查询。那你就应该考虑把CreditCard独立成根聚合。
聚合的设计是根据业务的需要,是设计的结果!如你的例子那样,代表着业务逻辑中不会有单独对应信用卡的搜索需求,信用卡依附于Customer,由Customer控制信用卡的生命周期。
如果你的业务中允许信用卡脱离Customer单独存在,那么信用卡本身应该是一个聚合。但是实际业务中,脱离了Customer的信用开,貌似意义不大!
您好,感谢您的回答。
我的问题是,虽然在业务处理上,客户和信用卡作为一个聚合是合理的,但是我仍然会针对信用卡进行独立的查询。这是不可避免的。那么是否可以说因为我要对信用卡进行查询或分析,那么我就必须要把Customer和CreditCard拆分成两个独立的聚合根呢。
@Crisqiu: 也有相似的疑问。我换个角度提问:
这样的话,一个聚合根可以作为另一个聚合根的非根聚合项?还是customer里只需要信用卡的ID就可以了,谢谢