在模型的两个聚合中如何重用对象
例如,在汽车这个聚合中,因为需要对每个轮胎进行跟踪,所以需要区分这些轮胎,因此,在汽车聚合中,轮胎是实体对象,在这个聚合中,它们需要有唯一的ID。而在轮胎回收站这个聚合中,轮胎只是一个物,并不需要进行区分识别,因此不需要有ID,所以,这些轮胎又变成了值对象。这两个聚合中的轮胎,只在有无标识这一点上有差别,那么在建模的时候,是需要分别定义两个轮胎对象,一个定义在汽车聚合中,另一个定义在轮胎回收站聚合中?还是只定义一个轮胎,在两个聚合中都聚合同一个轮胎?
为什么首先要尊重聚合呢?因为只有尊重聚合才有更自然的松耦合,如同我们加强水分子之间的凝聚力,通过冰冻方式就能将水划分成一个独立的有强内聚的冰块。
初步总结设计的先后主次:聚合第一 松耦合第二,最后是重用,而很多人都是反过来,更多设计可参考:http://www.jdon.com/designpatterns/the-single-responsibility-principle.html,其中提到的Cohesion也是这个意思。
按照我总结的这个原则,很显然虽然同一个对象存在两个聚合边界内,也是不能为重用而重用,因为它们在不同上下文中扮演的角色不同,一个扮演主要角色:实体;一个扮演次要角色:值对象。
[该贴被banq于2014-02-13 19:07修改过]