DDD概念概览 [0]

软件的核心,是为其用户解决领域相关问题的能力。

何为DDD

DDD是Domain Driven Design的简称。领域驱动设计,“领域”指业务领域,“设计”指软件设计。
DDD可以看成一种开发思想体系,促成了一种新的以领域为中心的思维方式,使得团队可以高效管理——用于复杂问题域的软件的构造和维护。

为什么DDD

对于一个复杂业务系统,无视业务复杂度而割裂式地进行软件设计,往往会造成软件的大泥球模式(BBoM),后果就是:

  1. 对统一语言和问题域知识缺乏重视,导致代码库可用但无法揭示业务意图。
  2. 缺乏基于问题域模型的应用程序设计的重视,让代码库缺乏与业务行为的协同效应,当有后续功能的扩展就会变得棘手。领域复杂性和技术复杂性混合在了一起。
  3. 会扼杀开发。对开发人员来说,软件杂乱、变更易出错。对企业来说,降低了软件快速实现商业价值的能力。
  4. 缺乏对问题域的关注和正确认识,构建出来的软件系统往往会失败。
    注:问题域 ,涉及你当前正在构建软件的主题领域。是确定软件价值的关键点。

DDD模式

DDD具有两种模式类型:战略模式和战术模式。
战略模式影响的是解决方案,战术模式用于实现富领域模型。


Domain Drive Design Summary.png

DDD战略模式

领域驱动设计的战略模式会提炼问题域并塑造应用程序的架构。

  1. 提炼问题域以揭示重要之处是什么 —— 核心子域。核心域是编写软件的原因,保留最大价值的关键区域,决定软件成功与否的关键。并非一个系统的所有部分都需要被精心设计,团队可以更专注于核心领域。
  2. 在解空间构建一个软件模型,以处理领域问题并让软件与业务保持一致。
  3. 运用统一语言(Ubiquitous Language),开启建模协作。首先,确保的是领域专家和开发团队协作工作,其次,是将分析模型绑定到代码模型,以便开发团队和领域专家能够在模型设计方面进行协作。
  4. 限界上下文(Bounded Context),定义了模型的适用性并确保保留其完整性和独立发展的能力。统一语言和模型的适用边界应该是要在具体的限界上下文内。
  5. 上下文映射(Context Map)。上下文映射提供了整个系统各上下文边界之间的宏观状况,揭示了上下文之间的关系和交互方式,同时表现出各上下文内模型的有多少差异,以及它们的交换哪些数据来实现业务处理过程。
问题空间 & 解空间

战略模式中强调问题空间和解空间的区别。只有明确确定了问题空间,才能分析出对应的解空间,最终才能构建出满足解决业务问题的成功软件。
上1,是解决问题空间复杂度的管理模式。问题空间将问题提炼成更多可管理的子域。
上2、3、4、5, 是解空间的管理模式。

战略模式强调了DDD的侧重点是:知识消化、知识提炼、协作沟通、统一语言、上下文、模型持续发展。
后面战术模式,其实只是支持其实现而推荐的手段。

DDD战术模式

DDD的战术模式(也称模型构造块)是一个帮助创建用于复杂有界上下文的有效模型的模式集合。
许多模式都早于DDD概念的出现,但依然有一些被推荐为DDD战术的标准模式。
在战略模式提供的架构和原则的基础上,共用这些标准模式可以让设计有序进行,也使项目组成员能够更方便地了解彼此的工作内容。

  1. 实体(Entity)
  2. 值对象(Value Object)
  3. 领域服务(Domain Service)
  4. 工厂(Factory)和验证器(Validator)
  5. 聚合(Aggregation)
  6. 资源库(Repository)
  7. 领域事件(Domain Event)
  8. 模块(Module)
  9. 集成限界上下文
  10. 六边形架构
参考文献
  1. 《领域驱动设计:软件核心复杂性应对之道》,Eric Evans 著
  2. 《实现领域驱动设计》,Vaughn Vemon 著
  3. 《领域驱动设计模式、原理与实践》,Scott Millett / Nick Tune 著
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容