• 划分为更小的模型

    限界上下文是DDD的核心模式,它表示分离模型并明确划分之间的边界。使用这种模式的原因是,当随着应用规模的增加,维护庞大的模型变得异常艰难。限界上下文可以有效减低模型的体积。限界上下文有以下几个属性

    • 语言(领域)的边界
    • 涉及洋葱架构中的所有层级
    • 不同的限界上下文之间有明确的关系

    首先,它是领域的边界,我们和领域专家交流的语言被局限在限界上下文内,不同限界上下文中的领域对象命名不必相同。两个限界上下文中的实体和值对象可以拥有相同的名字,但它们可能毫不相干。你可以将限界上下文看作是Java包,不同包的类名可以相同,但它们表达的意义可以不同。例如SnackMachine限界上下文可以存在名为CompositeElement的类,它代表其中可替代的部分。ATM限界上下文可以存在,但其代表的意义、拥有的属性及业务逻辑都不同。其次,限界上下文跨越洋葱架构的所有层级,每个限界上下文都是拥有一套洋葱架构。所以一个新限界上下文的建立必然带来新的实体、资源库、工厂、应用服务和其它洋葱架构都具备的元素。最后,明确界定限界上下文之间的关系非常重要,此时需要借助上下文映射,它表示限界上下文的映射以及它们之间的联系。下文将表述上下文映射。