首页 > 代码库 > 领域驱动设计架构风格
领域驱动设计架构风格
领域驱动设计 (DDD) 是面向对象的软件设计方法,基于业务领域、元素和行为,以及它们之间的关系。其目标是将潜在业务领域的实现用业务领域专家语言定义的领域模型来表达出来。领域模型可以看一个框架,让业务变得有条理的解决方案。
要应用领域驱动设计,您必须对您想建模的业务领域有很了解, 或者熟练掌握这些业务知识。开发团队将经常与业务领域专家合作来创建模型。架构师,开发人员和主题专家有着不同的背景,在许多环境中将使用不同的语言来描述他们的目标,设计和要求。 而在域驱动设计中,整个团队统一使用一种专注于业务领域的单一语言,并不包括任何技术术语。
软件的核心是域模型,它是这个共享语言的直接投影,它允许团队通过分析围绕在软件周边的语言快速找到切入点。通用语言的创建不仅仅是接受领域专家的信息到与应用之间的操练。很多时候,开发团队之间的沟通问题不仅仅是因为误解了该领域的语言,还因为该领域的语言本身是模棱两可的。领域驱动的设计过程不仅要实现所使用的语言的目标,而且还改进和完善领域的语言。这反过来又有益于正在建设的软件,因为该模型是一个领域语言直接投影。
为了让模型保持语言的纯粹的和可用,你必须在域模型中实现大量的隔离和封装。因此,基于域驱动设计的系统可能会有相对较高的成本。但领域驱动设计提供了许多技术上的好处,如可维护性,它应该只适用于复杂的领域,其模型和语言处理在复杂的信息沟通上以及领域共同理解的阐述上有明显的好处。
下边是领域驱动设计风格的好处:
- 沟通. 开发团队中的所有各方都可以使用域模型及其定义的实体,使用通用业务领域语言来传播业务知识和需求,而不需要技术术语。
- 可扩展. 领域模型通常是模块化的和灵活的,它很容易随着条件和需求的变化而更新和扩展。
- 可测试. 领域模型对象是低散耦合和高内聚的,这让它们更容易测试。
假如你有一个复杂的领域,你想改善开发团队间的沟通和理解,或者你必须使用一个所有干系人都能懂的通用的语言来表达应用程序的设计,那就考虑 DDD。如果你有庞大且复杂的企业数据,难以用其它技术进行管理, DDD 也是个理想的方法。
对于领域驱动设计技术的总结,请参见“领域驱动设计”。http://www.infoq.com/minibooks/domain-driven-design-quickly. 另外, 参见 Eric Evans写的"Domain-Driven Design: Tackling Complexity in the Heart of Software" (Addison-Wesley, ISBN: 0-321-12521-5) 和Jimmy Nilsson写的"Applying Domain-Driven Design and Patterns" (Addison-Wesley, ISBN: 0-321-26820-2).
领域驱动设计架构风格