领域驱动是如何访问聚合内的对象的
在领域驱动内讲究通过聚合访问聚合内的对象,但我不明白!例如我实现一个借书功能,有图书类、出版社、作者三个类,图书作为聚合根,出版社和作者是聚合内的对象,现在我获取所有的作者,难道要通过图书类获取?这怎么获取?
在领域驱动内讲究通过聚合访问聚合内的对象,但我不明白!例如我实现一个借书功能,有图书类、出版社、作者三个类,图书作为聚合根,出版社和作者是聚合内的对象,现在我获取所有的作者,难道要通过图书类获取?这怎么获取?
如果聚合设计得恰当,外部很少会要直接访问聚合内对象,如果有时偶尔需要,通过聚合根返回值对象即可,这是封装原则。
并不是说,以后如果要用到聚合内对象,都得通过聚合根,特别是一些重要的普通实体,还是可以通过仓储Repository获得的。如果这个实体也是另外一个聚合的聚合根,那也方便。
总之,聚合与有界的上下文都是为了封装,看到事物有高凝聚性而顺势设计的。
感觉这个聚合不太好设计!
感觉这个聚合不好设计!
难者不会,会者不难, 聚合是跟有界上下文有关,找到有界上下文就可以,什么是有界上下文,通俗讲就是我们讲的模块,业务模块。
找出每个业务模块中那个领头的活动概念,也就是在一群人中找出头头出来,比如一伙人打砸抢,它们是聚合,表现为一致性业务行为:打砸抢,那么是谁在指挥协调,保证成员行动一致性?那就是找出头。