领域驱动设计是Eric Evans 定义的一种发展理念,设计模式
软件复杂性:偶发性技术复杂性和领域逻辑复杂性。架构
问题域涉及你当前正在构建软件的主题领域。DDD强调的是在致力于为大型复杂业务系统建立软件时专一领域要高于其余的一切的需求。框架
DDD 能同时应对理解问题域以及建立有助于解决其内在的问题的可维护解决方案的挑战。学习
1.提炼问题域已揭示重要之处是什么。编码
开发团队与领域专家会使用分析模式和知识处理来将大的问题域提炼成更具管理性的子域。核心领域是出于开发过程的产品背后的驱动力;它是构造产品的根本缘由。设计
探索核心领域有助于团队理解他们制做软件的缘由以及软件对业务达成的成就意味着什么。对业务目标的鉴定将使得开发团队可以肯定系统的重要部分并为之投入精力。随着业务的发展,软件也必须相应发展;它须要具有可修改能力,对应用程序关键区域的代码质量进行投入将有助于应用程序跟上业务的变化节奏。对象
2.建立一个模型以解决领域问题 在解空间中,会为每个子域构建一个软件模型以处理领域问题并让软件与业务保持一致。该模型并不是现实世界的模型,而更多的是构建来知足业务用例需求的一个抽象体,同时仍保持业务领域的规则和逻辑。开发
3.使用公共语言开启建模协做 模型使用公共语言构建(UML),以便快捷高效地将软件模型和概念分析模型链接在一块儿。编码时的术语会被映射到公共语言中,在业务分析时隐藏的概念也会被反馈到代码中。这正是领域专家和开发团队可以在协做中逐步发展模型的关键。产品
4.将模型与歧义和损坏隔离 模型位于有界上下文内,定义了模型的适用性并确保保留其完整性。有界上下文用于造成一个围绕模型的防御边界,这是经过容许整体解决方案的不一样模型在良好定义的业务上下文内部逐步发展来达成的,这样就不会带来对系统其余的负面连锁影响。架构模式
模型是与基础架构代码隔离的,以免技术与业务概念融合的偶发复杂性。经过将模型完整性与第三方代码隔离,有界上下文还能阻止模型完整性被损坏。
DDD 理解确保团队和业务在独立模型和上下文如何共同工做以便解决跨越子域的领域问题方面要很是清楚的需求。
DDD的战术模式是一个帮助建立用于复杂有界上下文的有效模型的模式集合。(企业应用架构模式 ,设计模式)
战术模式是DDD的关键 对于开发人员来讲,在开发人员不关心或不理解的领域方面,发如今代码中实现的DDD战术模式远比发现业务用户和团队之间的会话要容易多。这就是DDD会被误认为不过是由实体,值对象和存储库构成的一种模式语言。
DDD是一套框架
DDD是银弹
不在与业务是否可以用到,关键是你是否具有某种能力。这个才是付费的标准。