Domain driven design 我们不应该';除非域模型非常复杂,否则不能分离核心?
埃文的书,第430页: 因此,尽管此示例可能不够复杂,无法 把我们送到一个隔离的核心 a) 作者是否暗示除非领域模型非常复杂,否则我们不应该有一个分离的核心?换句话说,除非处理复杂的域模型,否则核心域应该只以文档的形式存在(即域愿景声明和突出显示的核心),而不应该表现为单独的物理实体Domain driven design 我们不应该';除非域模型非常复杂,否则不能分离核心?,domain-driven-design,Domain Driven Design,埃文的书,第430页: 因此,尽管此示例可能不够复杂,无法 把我们送到一个隔离的核心 a) 作者是否暗示除非领域模型非常复杂,否则我们不应该有一个分离的核心?换句话说,除非处理复杂的域模型,否则核心域应该只以文档的形式存在(即域愿景声明和突出显示的核心),而不应该表现为单独的物理实体 谢谢对我来说,分离的核心是指将域组件组织到完全独立的包中,但一起代表相同的核心域。大型核心可能会受益于这种类型的组织,以澄清领域的组成,或将支持能力与核心领域概念分离。对我来说,分离核心是指将领域组件组织成完全独立
谢谢对我来说,分离的核心是指将域组件组织到完全独立的包中,但一起代表相同的核心域。大型核心可能会受益于这种类型的组织,以澄清领域的组成,或将支持能力与核心领域概念分离。对我来说,分离核心是指将领域组件组织成完全独立的包,但一起代表同一个核心领域。大型核心企业可从此类组织中获益,以明确领域的组成,或将支持能力与核心领域概念分开。整个领域驱动模式和方法体系应仅用于复杂的业务领域 “complex”是一个贬义词,当代码模型设计得不好或无法提供领域驱动应用程序所需的表达能力时,可以将其应用于代码模型。此外,初级建模师可能会忽略业务本身的要点,设计出比业务更复杂的模型(通常是为了追求灵活性) 当您处理大型和复杂的领域以及多年来不断发展的模型时,您通常会积累一些小的建模债务,类似于众所周知的技术债务。然后,朝着一个只应该包含最有价值的概念和业务规则(从客户的角度来看)的独立核心领域进行重构,可以降低系统演化的成本(即使它本身通常是一个昂贵的重构)
然而,当您需要DDD时,这不仅仅是编写规范文档。您需要DDD来理解和处理复杂的业务,通过用称为“源代码”的符号表示来表达它们。在我看来,DDD是一种有价值的业务分析工具,但它的全部目的是为解决复杂业务问题的有价值的应用程序进行编码。整个领域驱动模式和方法只能用于复杂的业务领域 “complex”是一个贬义词,当代码模型设计得不好或无法提供领域驱动应用程序所需的表达能力时,可以将其应用于代码模型。此外,初级建模师可能会忽略业务本身的要点,设计出比业务更复杂的模型(通常是为了追求灵活性) 当您处理大型和复杂的领域以及多年来不断发展的模型时,您通常会积累一些小的建模债务,类似于众所周知的技术债务。然后,朝着一个只应该包含最有价值的概念和业务规则(从客户的角度来看)的独立核心领域进行重构,可以降低系统演化的成本(即使它本身通常是一个昂贵的重构)
然而,当您需要DDD时,这不仅仅是编写规范文档。您需要DDD来理解和处理复杂的业务,通过用称为“源代码”的符号表示来表达它们。在我看来,DDD是一种有价值的业务分析工具,但它的全部目的是为解决复杂业务问题的有价值的应用程序编码。“核心域应该只以文档的形式存在(即域愿景声明和突出显示的核心)。” 不可以。您的核心域不应仅作为一组文档存在。这违背了领域驱动设计的观点。DDD的全部要点是,您的业务分析工件在您的系统中具有一流的表示。例如,如果您的需求定期讨论ShippingCargo路线的概念,并且您没有用于ShippingCargo和路线的类(代码级工件),那么您就错了。通用语言的要点在于,我们所说的软件功能和它实际的功能之间有一个紧密的映射关系 该技术旨在管理认知负荷,减少不同利益相关者对系统的术语和推理的阻抗不匹配 仅在文档中保存模型是一种违反规则的情况。与之类似,文档会过时并失去价值。我再怎么强调也不为过,DDD的全部要点是,您的代码应该能够在非代码文档的最小支持下实现核心域 当域对象(实体、值对象等)的数量变得如此之大,以至于为了内聚性和架构的简单性,将事物分开是有意义的时,分离的核心特别有用 这一概念的应用实例