「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」
昨天我们介绍了一下DDD里的一些概念,并简要说了下其中一些概念的作用,让我们接着往下讲讲。
聚合根
上一篇文章我们说到了有界上下文和事件风暴。有界上下文代表业务的边界,在这个边界里面的语言是统一的,不会产生二义性,所以,有界上下文可以作为一个单独的微服务存在。在微服务中,可能会有很多模块,这些模块之间相互有依赖关系,如果不加以约束控制,那么最后就是一团乱麻,无法缕清。为了让模块和模块之间的依赖更加清晰,DDD给我们提供了聚合的概念。聚合根,是指在一大堆行为逻辑高度一致的对象中,将其它对象以类似树形结构组织到一起的对象。其本身也是一个对象,它可以依赖其它对象,但是其它对象不允许反过来依赖聚合根。说白了其实就是单向依赖,这样,业务逻辑的方向就是一条路往下走,避免了纠缠不清的引用,有利于我们对业务的理解。
聚合根的设计
知道了什么是聚合根,那么我们怎么去发现和建模聚合根呢?有一种方法是根据领域事件来发现聚合根,在具体的业务系统中,会发生什么事件,有什么样的活动,应该都是包含在了我们的有界上下文中。这些活动,就是聚合根,在一个业务模块中,发生事件对象,都可以将其作为聚合根,即发生这个活动的主语,将聚合根识别出来之后,就只能由它去依赖其它对象,其他对象反过来依赖它。
以上,就是我对DDD中的聚合根的理解,希望对大家有所帮助。