领域驱动是如何访问聚合内的对象的

    
JackGao
13-09-24 5 542

在领域驱动内讲究通过聚合访问聚合内的对象,但我不明白!例如我实现一个借书功能,有图书类、出版社、作者三个类,图书作为聚合根,出版社和作者是聚合内的对象,现在我获取所有的作者,难道要通过图书类获取?这怎么获取?

banq
2013-09-25 08:19

如果聚合设计得恰当,外部很少会要直接访问聚合内对象,如果有时偶尔需要,通过聚合根返回值对象即可,这是封装原则。

并不是说,以后如果要用到聚合内对象,都得通过聚合根,特别是一些重要的普通实体,还是可以通过仓储Repository获得的。如果这个实体也是另外一个聚合的聚合根,那也方便。

总之,聚合与有界的上下文都是为了封装,看到事物有高凝聚性而顺势设计的。

JackGao
2013-09-25 10:25

感觉这个聚合不太好设计!

JackGao
2013-09-25 10:26

2013-09-25 08:19 "@banq
"的内容
如果聚合设计得恰当,外部很少会要直接访问聚合内对象,如果有时偶尔需要,通过聚合根返回值对象即可,这是封装原则。并不是说,以后如果要用到聚合内对象,都得通过聚合根,特别是一些重要的普通实体,还是可以通过仓储Repository获得的。如果这个 ...


感觉这个聚合不好设计!

banq
2013-09-25 11:28

2013-09-25 10:26 "@JackGao
"的内容
感觉这个聚合不好设计! ...


难者不会,会者不难, 聚合是跟有界上下文有关,找到有界上下文就可以,什么是有界上下文,通俗讲就是我们讲的模块,业务模块。

找出每个业务模块中那个领头的活动概念,也就是在一群人中找出头头出来,比如一伙人打砸抢,它们是聚合,表现为一致性业务行为:打砸抢,那么是谁在指挥协调,保证成员行动一致性?那就是找出头。

2Go 1 2 下一页