DDD(十一)--模块
1、引言 Module,即模块,是指提供特定功能的相对独立的单元。提到模块,你肯定就会想到模块化设计思想,也就是功能的分解和组合。对于简单问题,可以直接构建单一模块的程序。而对于复杂问题,则可以先创建若干个较小的模块,然后将它们组装、链接在一起,从而构成复杂的软件系统。 在DDD中,模块的用途也是如此,通过分解领域模型为不同的模块,以降低领域模型的复杂性,提高领域模型的可读性。 二、DDD中的模块 模块是一个笼统的概念,比较宽泛,为了正确发挥模块的威力,理解模块的概念就十分重要。下面我们从具体的问题着手,来尝试说明模块的概念。 就拿电商系统来说,维护一个订单,需要收货地址、购买商品、订单信息。这些信息是紧密相关的,不可独立存在。我们可以抽象出三个简单的聚合。那这些类该如何存放呢?是为每一个聚合创建一个文件夹存放还是放在同一个文件夹?我想答案不言而喻。 这三个聚合就是一个模块,一个客户模块。通过定义一个order文件夹,来将相关联的领域对象组合起来。 通过以上的举例说明,我们可以看到每个模块都是相对独立的功能单元。通过模块来组织和封装相关概念,来分解领域模型,以简化领域模型的复杂性。 但不要将模块与子域和限界上下文混淆。在复杂的领域模型中,为了对领域模型中进行准确建模,需要将领域模型拆分成多个子域,每个子域对应一个或多个限界上下文。在限界上下文中