- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                
                              DDD领域驱动设计 
DDD领域驱动设计 
1. 领域驱动设计 
1.1 领域驱动概述 
领域驱动设计(Domain Driven Design) 是⼀种从系统分析到 件建模的⼀套⽅法论。以领域为核⼼驱动⼒的设计体系。 
为什么使⽤领域驱动设计 
1.⾯向对象设计,数据⾏为绑定,告别贫⾎模型。 
2.优先考虑领域模型,⽽不是切割数据和⾏为。 
3.准确传达业务规则。 
4.代码即设计。 
5.它通过边界划分将复杂业务领域简单化,帮我们设计出清晰的领域和应⽤边界,可以很容易地实现业务和技术统⼀的架构演进。 
领域驱动设计,⼜称   件核⼼复杂性应对之道。是⼀套基于对象思维的业务建模设计思想,相对于 CRUD 系统有更⾼的灵活性,是业务 
⼈员处理复杂问题的有效⼿段。 
1.2 领域驱动优点 
DDD最⼤的好处是 :接触到需求第⼀步就是考虑领域模型,⽽不是将其切割成数据和⾏为,然后数据⽤数据库实现,⾏为使⽤服务实现,最 
后造成需求的⾸肢分离。DDD让你⾸先考虑的是业务语⾔,⽽不是数据。DDD强调业务抽象和⾯向对象编程,⽽不是过程式业务逻辑实 
现。重点不同导致编程世界观不同。 
1.⾯向对象 
封装 :Account的相关操作都封装在Account Entity上,提⾼了内聚性和可重⽤性。 
多态 :采⽤策略模式的OverdraftPolicy (多态的典型应⽤)提⾼了代码的可扩展性。 
2.业务语义显性化 
通⽤语⾔ :  “⼀个团队,⼀种语⾔”,将模型作为语⾔的⽀柱。确保团队在内部的所有交流中,代码中,画图,写东西,特别是讲话的时候 
都要使⽤这种语⾔。例如账号,转账,透⽀策略,这些都是⾮常重要的领域概念,如果这些命名都和我们 ⽇常讨论以及PRD中的描述保持⼀ 
致,将会极⼤提升代码的可读性,减少认知成本。说到这,稍微吐槽⼀下我们有些⼯程师的英语⽔平,有些神翻译让⼀些核⼼领域概念变得 
⾯⽬全⾮。 
显性化 :就是将隐式的业务逻辑从⼀推if-else⾥⾯抽取出来,⽤通⽤语⾔去命名、去写代码、去扩展,让其变成显⽰概念,⽐如透⽀策 
略这个重要的业务概念,按照事务脚本的写法,其含义完全淹没在代码逻辑中没有突显出来,看代码的⼈ ⾃然也是⼀脸懵逼,⽽领域模型 
⾥⾯将其⽤策略模式抽象出来,不仅提⾼了代码的可读性,可扩展性也好了很多。 
1.3 DDD解决复杂度的⽅式 
⾸先, 典型的DDD实现了业务复杂度和技术复杂度的隔离,通过分层架构隔离了关注点,举个例⼦,在传统的DDD四层架构中,DDD划分 
出了领域层、仓储层、基础设施层、接⼝层 ; 
在领域层中,存放业务逻辑的关注点,即所谓的领域⾏为 ;在应⽤层中,DDD暴露出了 业务⽤例级别           (Use Case)的服务接⼝,粘合业 
务逻辑与技术实现 ;在基础设施层中,DDD集中放置了⽀撑业务逻辑的技术实现,如 :MQ消息发送、对缓存的操作等 ;在仓储层中,DDD 
放置了和领域状态相关的逻辑,打通了领域状态持久化与存储设施之间的联系。 
除了划分不同分层外,DDD还提出了⼀个建设性的概念:       “限界上下⽂  (Bounded Context)”,通过限界上下⽂对业务流程分⽽治之, 
切分为不同的⼦系统,在每个⼦系统中利⽤DDD的分层架构/六边形架构等思想分别进⾏逻辑分层。通过这样的分治之后,DDD帮我们将业 
务复杂度隔离到了每个细分的领域内部,⽽且DDD本⾝的分治思想,也帮助我们隔离了业务需求和技术需求的关注点。 
这是⼀个典型的领域驱动设计分层架构,蓝⾊区域的内容与业务逻辑有关,⽽灰⾊区域的内容则与技术实现有关。这⼆者泾渭分明,最后汇 
合在应⽤层。 
应⽤层确定了业务逻辑与技术实现的边界,通过直接依赖或者依赖注⼊  (DI,Dependency Inj ection)的⽅式将⼆者结合起来。充分体现 
了DDD能够隔离技术复杂度与业务复杂度的特点。 
2. 领域核⼼知识体系 
2.1 领域知识概念 
DDD的核⼼知识体系主要包括领域、⼦域、核⼼域、⽀撑域、通⽤域、限界上下⽂、实体、值对象、聚合、聚合根等概念。 
2.2 领域战略战术设计 
DDD有战略设计和战术设计之分。战略设计主要从⾼层俯视我们的                     件系统,帮助我们精准地划分领域以及处理各个领域之间的关系 ;⽽ 
战术设计则从技术实现的层⾯教会我们如何具体地实施DDD。 
战略建模-Strategic Modeling 
限界上下⽂  (Bounded Context) 
上下⽂映射图  (Context Mapping) 
战术建模-Tactical Modeling: 
聚合-Aggregate 
                您可能关注的文档
最近下载
- 第五单元第1课《多变的镜头》课件 2024—2025学年人美版(2024)初中美术七年级上册+.pptx VIP
 - 四川省2025年高职单招文化考试(中职类)语文试卷+答案 .pdf VIP
 - 【议题式】第五课 在和睦家庭中成长 课件 -2026新高考思想政治一轮复习.pptx VIP
 - 施工应急预案应急反应预案.docx VIP
 - 机械设备销售代理授权委托协议书(1范本).docx VIP
 - 高考语文作文纸3栏(电子版可打印)A3.pdf
 - 幼儿园科普知识章鱼课件.pptx VIP
 - 统编版二年级语文上册单元作文能力提升第1单元:有趣的动物(素材积累).docx VIP
 - 部编版语文九年级下册《诗词曲五首 山坡羊潼关怀古》课件.pptx VIP
 - ICH指导原则文件目录(中英文) .pdf VIP
 
原创力文档
                        

文档评论(0)