目录
领域驱动设计(Domain-Driven Design, DDD)是一种软件开发方法论,它强调将业务领域知识与软件实现紧密结合,以提高软件对于复杂业务需求的适应性和可维护性。DDD由埃里克·埃文斯(Eric Evans)在其2003年出版的同名书籍《领域驱动设计》中首次提出,并逐渐成为处理复杂业务逻辑的一种重要指导思想。 领域(Domain):指的是业务活动或专业知识的特定范围。在软件开发中,领域通常是指应用程序所要解决的问题空间。 模型(Model):是对领域的抽象表示,用于捕捉领域中的核心概念及其相互关系。模型是领域专家和开发者之间沟通的基础。 领域模型(Domain Model):是一个概念性的模型,用来描述领域内的实体、它们之间的关系以及它们的行为。领域模型不仅仅是一组类图,而是对领域深层次理解的体现。 通用语言(Ubiquitous Language):是在领域专家和开发团队之间共享的一套术语和概念体系,旨在减少误解并促进有效沟通。 上下文映射(Context Map):用于明确不同子系统或模块之间的边界,以及它们如何交互。这有助于避免不同部分的模型发生混淆或冲突。 限界上下文(Bounded Context):定义了模型适用的具体边界,确保每个模型只在自己的上下文中保持一致性和完整性。 聚合(Aggregate):是一组相关对象的集合,被视为一个整体进行管理和操作。聚合根(Aggregate Root)是这个集合的入口点。 实体(Entity):具有唯一标识的对象,即使其属性完全相同,不同的实体也被视为不同的对象。 值对象(Value Object):没有独立的身份,其价值在于其属性的组合。两个具有相同属性的值对象被认为是等价的。 服务(Service):当一个操作不属于任何特定的实体或值对象时,可以将其设计为服务。服务通常是无状态的。 仓库(Repository):提供了一种访问机制,用于持久化存储中的聚合管理,使得客户端代码能够像操作内存中的集合一样操作这些聚合。 总之,领域驱动设计鼓励开发团队与业务领域紧密合作,通过构建精确反映业务需求的软件模型来提高软件的质量和业务价值。
核心概念
实践原则