DDD - 使用聚合(Aggregate)来设计类库
聚合一个模型会包含众多的领域对象,不管在设计时做了多少考虑,我们都会看到许多对象会跟其他的对象发生关联,形成了一个复杂的关系网,如果设计不好时,这个对象网会带来不好的维护性和低性能。 聚合是一个用来定义对象所有权和边界的领域模式,它使用边界将内部和外部的对象划分开来,针对数据变化考虑的一系列相关的对象组合。聚合通过定义清晰的所有权和边界使模型变得更紧凑,避免出现盘根错节的对象(关系)网,它可以减少对象间不必要的联系,使关系密切的对象联系在一起,提高系统的管理。 聚合类对调用者隐藏了协作类的用法,可用来封装领域类中复杂的、有侵入性的、状态依赖的需求。 规则
保持数据一致性和强化不变量
外部对象如何引用内部对象
可变根对象有时候一个对象在某个时刻是聚合根对象,在另一个时刻是另一个聚合子对象。一般这类情况会出现在资源类信息中,
上面例子表明了材料资源有时可以作为根对象,有时可以作为子对象来进行设计,在CSLA2008书中提到过一个可切换的根对象也就是处理这种情况。但是出现这种情况后,我总感觉有点别扭,写起代码来也总觉得不舒服。我的一个建议做法如下: 如果内部对象只是作为外部对象的一个只读参考引用,可以通过以下方式获取子对象,这样材料对象就只是一个聚合对象中的子对象,而不需要作为可切换根对象了。 如果你有其它方法,请回复! 参考:dddquickly中文版.pdf 欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |