架构师篇 DDD领域驱动设计篇

2 篇文章 0 订阅
订阅专栏

一 DDD领域驱动设计

1.1 领域驱动设计

领域驱动设计(英文:Domain-Driven Design,缩写DDD)是一种模型驱动设计的方法领域驱动设计常以战略设计与战术设计来将整个领域展现的淋漓尽致,其作用范围既面向业务也面向技术。从战略角度(个人更喜欢称其为上帝视角)去规划系统、划分领域。而从战术角度则从技术层面来指导我们该如何去设计。

功能作用:

1.通过模型直接反映软件的结构;2.以模型基础形成团队的统一语言;3.把模型作为精粹的知识用于传递。

领域驱动设计的核心在于领域建模,架构师的水平高低在很大程度上也体现在领域建模水平上。

1.2 mvc架构

对于业务逻辑不复杂的软件开发,MVC是简单高效的方法。但是随着业务逻辑愈来愈复杂,MVC会开始力不从心。主要体现在这几个方面:

1.MVC模式仅仅反应了软件层面的架构,它不包含业务语言,无法使用该设计直接和业务对话。

2.MVC模式天然切割了数据和行为,然后用数据库实现数据,用服务实现行为,容易造成需求的首尾分离。

3.缺乏明确的边界划分,至少在顶层设计层面没有边界划分的规范要求,更多地是靠技术负责人根据经验进行划分,大规模团队协作容易出现职责不清晰、分工不明确。

1.3 DDD的作用*

1.统一语言:

团队(业务方、产品、设计、技术等)在一个限定的上下文中有意识地形成对事物统一的描述,从而形成统一的概念(模型)统一语言用于需求文档、PRD文档、系统分析文档、代码以及日常沟通中,统一的概念和术语可以极大地提升沟通效率和工作效率。

2.面向业务建模:

领域模型和数据模型分离,业务复杂度和技术复杂度分离。DDD聚焦于领域模型,将技术实现细节从模型中剥离出来,能够更好地降低业务和技术的耦合度。

3.边界清晰的设计方法:

通过对需求的识别及分类,划分出领域、子域和限界上下文,进而指导团队成员分工协作,从而做到将复杂的问题分而治之地解决。

4.业务领域的知识沉淀:

通过模型与软件实现关联,统一语言与模型关联,反复论证和提炼模型,使得模型与业务的真实世界保持一致,从而促使业务知识通过模型得以传递和沉淀,https://zhuanlan.zhihu.com/p/641295531

1.4 领域通用语言

需要确保团队使用的语言在所有的交流形式中看上去都是一致的,这种语言被称为“通用语言(Ubiquitous Language)”。通用语言应该在建模过程中广泛尝试以推动软件专家和领域专家之间的沟通,从而发现要在模型中使用的主要的领域概念。

1.5 DDD笔记总结

1.5.1 DDD的作用

1.ddd是领域设计:ddd是通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型与代码模型的一致性。

Ddd不是架构,而是一种架构设计方法论,它通过边界划分将复杂业务领域简单化,帮我们设计出清晰的领域和应用边界,可以很容易地实现架构演进。

概述:不是一种架构,而是一种架构方法论,是一种拆解业务,划分业务、确定业务边界的方法,是一种领域设计思想。核心思想是领域模型,避免业务逻辑的复杂度与技术实现的复杂度混淆在一起。如在不同场景中,我们对同一个事物的称呼也有较大差异。例如,商品、货物;同样一个东西,在交易领域叫做商品,在物流领域叫做货物。

2.ddd的范围:

战略设计主要从业务视角出发,建立业务领域模型,划分领域边界,建立通用语言的限界上下文,限界上下文可以作为微服务设计的参考边界。

战术设计从技术视角出发,侧重于领域模型的技术实现,完成软件开发和落地,包括:聚合根,实体,值对象,领域服务,应用服务和资源库等代码逻辑的设计和实现。

3.闲谈吹牛格局

DDD思想精髓值得软件工程师以及架构师们领会,即:

1.直接面向业务进行领域建模,将业务知识沉淀到领域模型中。业务知识的沉淀不是一蹴而就,应该反复提炼,持续演进;为了让演进提炼的过程高效顺畅,团队使用统一语言来沟通、描述需求和设计方案。

2.高内聚、低耦合是应对软件复杂度的不二法则领域、子域、限界上下文、聚合都是为这条宗旨服务的工具。

3.深刻理解业务,洞察问题本质才是一个架构师最核心的能力体现。寻找领域模型,提取统一语言,做分层与隔离。

1.5.2 贫血模型和充血模型*

1.贫血模型:只包含数据,不包含业务逻辑的类。

2.充血模型:既包含数据,也包含业务逻辑的类。

1.5.3 mvc与ddd的区别* 

 1.5.4 应用层和服务关系*

1.5.5 ddd的工程架构层级说明 

1.层级概述

2.层级功能说明

1.5.6 ddd的领域划分

1.领域的拆分

2.领域

3.领域

1.6 DDD的工程架构

1.6.1 工程概览

分为:接口层,应用层,领域层,基础设施层。

1.6.2 接口层

1.6.3 应用层

1.6.4 领域层

1.6.5 基础层

领域驱动设计DDD):分层架构
02-24
在应用系统开发中,采用严格的、单一的、真正的的分层架构是可以的,但实际上我们已经采用了多种架构模式设计系统。当多种不同范式的架构混合在一起,你会不会出现“指鹿为马”的现象呢?在研究分层架构时,常通过概念性的定义或OSI七层应用(架构)来说明或解释分层架构架构模式Layers有助于将应用程序划分为多组子任务,其中每组子任务都位于特定抽象层。图片取自《POSA,Vol.I,p22》作为一个在项目中引入分层架构的应用者,我们应该从更具体的规范来实现分层架构:相邻层之间必须是单向耦合。上层只能依赖下层,下层永远不能依赖上层。相邻层之间必须是单向通信。上层去调用下层所提供的接口,下层永远不能调用上层的
DDD - 一文读懂DDD领域驱动设计
迪曼奥特迦-博客
08-28 1724
2004 年埃里克·埃文斯(Eric Evans)发表了《领域驱动设计》(Domain-Driven Design–Tackling Complexity in the Heart of Software)这本书,从此领域驱动设计(Domain Driven Design,简称 DDD)诞生。DDD 核心思想是通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型与代码模型的一致性。DDD是一种设计思想,通过事件风暴使用通用语言对业务进行领域建模,通过限界上下文进行合理的领域拆分。.....
【Java】DDD领域驱动设计理解
漆黑梦工厂
08-28 1252
在对象的外围构建一个 Facade 层还封装对象的某些原子操作,以此来简化 Service 层的压力,但是要注意各个模块之间的松耦合,一旦紧耦合,就失去了使用贫血模型的本意。:指的是领域对象只包含了对象的特征,而没有对象的行为。:业务逻辑划分难以明确,什么样的业务放在对象中,什么样的业务放在业务层。:当进行复杂业务逻辑开发的时候,可以使用充血模型来简化业务层,但是对象的行为方法一定要单一,尽量做好封装。:只有属性没有行为的对象是没有生命的,这样的对象不是真正的对象,而且业务逻辑层将会十分庞大。...
【软件开发方法论】领域驱动设计(Domain-Driven Design,简称DDD
AA2534193348的博客
06-06 1921
领域驱动设计(Domain-Driven Design,简称DDD)是一种面向对象软件开发方法论,强调将业务领域划分成为多个子领域,并在每个子领域中针对领域对象进行分析、设计和开发。DDD的核心思想是将软件开发过程中的重点从技术转向业务领域,在不同的领域中建立明确的边界,使得软件系统更加贴近实际业务需求。
DDD领域驱动设计
果酱 の 博客
06-15 5700
领域驱动设计(Domain Driven Design,简称DDD)是一种软件开发方法论,旨在帮助开发人员更好地理解业务需求,将业务需求转化为可执行的软件代码。DDD强调将业务需求作为软件开发的核心,通过建立统一的语言和模型来确保开发人员和业务人员之间的沟通顺畅,从而提高软件开发的效率和质量。本文将从以下几个方面介绍DDD领域驱动设计的基本概念、原则、模式和实践经验,希望能够帮助读者更好地理解和应用DDD
DDD领域驱动设计详解
热门推荐
靖节先生的博客
06-04 5万+
DDD领域驱动设计1. 领域驱动设计1.1 什么是领域驱动设计1.2 为什么用领域驱动设计2. DDD核心知识体系2.1 DDD核心概念2.2 DDD战略战术设计2.2.1 DDD战略设计2.2.1 DDD战术设计3. DDD微服务架构模型3.1 基本架构3.1.1 DDD分层架构3.1.1 六边形理论3.1.1 CQRS架构设计3.2 代码结构3.3 服务调用 1. 领域驱动设计 1.1 什么是领域驱动设计 领域驱动设计(Domain Driven Design) 是一种从系统分析到软件建模的一套方法论
领域驱动设计DDD,Domain-Driven Design)
m0_52963553的博客
07-02 3282
大家好,我是练习两年半的Java练习生,今天我们来讲一讲关于架构设计中的一种模式,领域驱动设计,也称DDD,Domain-Driven Design。还有介绍一下秒杀项目中领域模型的一些设计。
领域驱动设计(Domain-Driven Design)总结
超越梦想,一起飞!!!
02-26 4087
DDD是指“领域驱动设计”(Domain-Driven Design),是一种软件设计方法论,主要关注于解决复杂业务领域的建模和实现问题。DDD的核心思想是将业务领域作为设计的核心,将业务领域的概念和规则融入到软件系统中,以满足业务需求
DDD领域驱动设计批评-幻灯片合集(一)共190页
03-07
DDD领域驱动设计浮夸,Eric Evans开了个坏头 领域驱动设计伪创新 之 聚合根 哪些中文资料上有领域模型案例 领域驱动设计割裂历史,哪里有详细一些的真实历史 软件开发废话赏析:事件风暴 领域驱动设计伪创新:为...
DDD领域驱动设计PPT
11-11
DDD领域驱动设计,建议后端,架构师阅读
新的架构领域驱动设计.zip
08-18
架构师备考资料、DDD设计资料 2020年系统架构设计师讲义.pdf;实现领域驱动设计 (美)弗农著.pdf;领域驱动设计精粹_覃宇.pdf
DDD领域驱动设计实战落地解惑-SACC2021年中国系统架构师大会.pdf
04-29
DDD领域驱动设计实战落地解惑-SACC2021年中国系统架构师大会
领域驱动设计中国峰会DDD-China2019
11-09
领域驱动设计峰会(DDD Conference)是由国内领域驱动设计DDD)思想和实践的领军者——ThoughtWorks的架构咨询师们组织发起,希望为国内的领域驱动设计DDD) 实践者们提供了一个互相交流、分享自己团队的成功...
DDD领域驱动设计)分层架构
m0_49499183的博客
07-24 1万+
DDD全称为(Domain-DrivenDesign,简称DDD),领域驱动设计
一文清晰讲明白DDD领域驱动设计)的知识点
唐欢
09-22 5117
DDD领域驱动设计)是一种处理高度复杂领域的设计思想,是一种架构设计方法论,是一种设计模式。以高内聚低耦合为目的,把一个复杂的软件应用系统中各个部分进行一个很好的拆解和封装,对软件系统进行模块化的一种思想。DDD不仅可以用于微服务设计,还可以很好地应用于企业中台的设计,也适用于传统的单体应用。
领域驱动设计(Domain-Driven Design, DDD
xiaocaij_icai的博客
03-25 1878
领域驱动设计(Domain Driven Design,简称DDD)是一种面向对象软件开发方法,它强调将软件系统的设计和实现过程与业务领域紧密结合,通过深入理解和建模业务领域,从而达到高内聚、低耦合的目的。在这个例子中,我们可以将书籍、借书人、图书馆等抽象为领域模型中的实体,把借书和还书等业务流程抽象为领域模型中的业务规则。通过这样的设计,我们能够更好地理解和建模业务领域,将业务逻辑和业务流程从代码中分离出来,从而实现高内聚、低耦合的目的,提高软件质量和可维护性。
DDD领域驱动设计 C#
最新发布
04-18
领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法论,旨在解决复杂业务领域的软件开发问题。它强调将业务领域的知识和概念直接融入到软件设计和开发中,以实现更好的业务价值和可维护性。 在C#中实施DDD时,可以采用以下几个关键概念和技术: 1. 领域模型(Domain Model):领域模型是DDD的核心概念,它是对业务领域的抽象和建模。在C#中,可以使用类和对象来表示领域模型,通过定义实体(Entity)、值对象(Value Object)、聚合根(Aggregate Root)等概念来描述业务领域中的实体和关系。 2. 领域驱动设计的分层架构DDD通常采用分层架构来组织代码。常见的分层包括用户界面层(UI)、应用服务层(Application Service)、领域层(Domain Layer)、基础设施层(Infrastructure Layer)等。每一层都有不同的职责和关注点,通过良好的分层设计可以实现代码的可维护性和可测试性。 3. 聚合根和聚合:聚合根是DDD中的一个重要概念,它是一组相关对象的根实体,通过聚合根可以保证一致性和边界。在C#中,可以使用类来表示聚合根,通过定义聚合根的行为和关联关系来实现业务逻辑。 4. 领域事件(Domain Event):领域事件是DDD中用于描述领域中发生的重要事情的概念。在C#中,可以使用事件(Event)或委托(Delegate)来表示领域事件,并通过事件驱动的方式来处理领域事件。 5. 仓储(Repository):仓储是用于持久化和检索领域对象的接口或类。在C#中,可以使用接口和实现类来定义仓储,并通过依赖注入等方式将仓储注入到其他类中。 6. 领域服务(Domain Service):领域服务是一种用于处理领域逻辑的服务。在C#中,可以使用类和方法来表示领域服务,并将其注入到其他类中使用。 以上是DDD领域驱动设计在C#中的一些关键概念和技术。通过合理运用这些概念和技术,可以更好地实现复杂业务领域的软件开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • linux shell 命令 echo中输出变量 61795
  • mysql的备份表的几种方法 61737
  • maven的5种打包方式,终有一款适合你1 47273
  • 在idea中配置 gitignore忽略文件(一) 46039
  • spring mvc 中@RequestBody注解的作用 41442

分类专栏

  • spring cloud 60篇
  • springcloud3 56篇
  • iotdb 11篇
  • k8s 4篇
  • redis 26篇
  • mybaits 32篇
  • 工作经验 1篇
  • spring 35篇
  • java基础知识 2篇
  • 分布式 12篇
  • 架构师 2篇
  • 任务调度 15篇
  • springboot源码 1篇
  • 职场 2篇
  • 实战项目 18篇
  • shiro安全框架 27篇
  • vue 8篇
  • spring security oauth 分布式认证授权 24篇
  • spring security 9篇
  • nginx 31篇
  • sso单点登录 4篇
  • docker 14篇
  • RocketMq 5篇
  • itext pdf 1篇
  • wps-办公软件 10篇
  • flink 4篇
  • jwt 2篇
  • spring mvc 44篇
  • mqtt 6篇
  • 网络IO编程模型-netty 16篇
  • 网络io编程模型 13篇
  • mina 13篇
  • websocket 3篇
  • java web 20篇
  • jdk 1篇
  • springcloud-2 6篇
  • 架构 2篇
  • influxdb 8篇
  • webservice 11篇
  • 数据分析 44篇
  • spark 5篇
  • 机器学习 16篇
  • 运筹学 2篇
  • scala分类 3篇
  • java 183篇
  • 大数据 73篇
  • flume 7篇
  • oracle数据库 8篇
  • jquery 9篇
  • javascript 8篇
  • solr 11篇
  • kafka 33篇
  • windows 5篇
  • maven 26篇
  • excel
  • powerdesigner 5篇
  • elasticsearch 43篇
  • mysql数据库 121篇
  • log4j 3篇
  • 插件
  • linux常用命令 64篇
  • es 2篇
  • 中文分词 1篇
  • git 29篇
  • jboss 2篇
  • 传输工具 10篇
  • tomcat 6篇
  • svn 6篇
  • 项目介绍 1篇
  • 设计模式 1篇
  • java 设计模式 5篇
  • 其它 6篇
  • css 6篇
  • 情感文摘 9篇
  • 算法 12篇
  • 采集爬虫 1篇
  • idea 31篇
  • ide开发工具
  • vmware 10篇
  • mogodb 1篇
  • 高并发多线程 35篇
  • python 52篇
  • springboot 156篇
  • zookeeper 7篇
  • 坑笔记 3篇
  • xmind 1篇
  • java8 16篇
  • hive 8篇
  • hadoop 2篇
  • hbase 10篇

最新评论

  • 使用Navicat+Premium模型设计表之间关系图(1:n;n:n)

    马大头: 请问图中1:n文字是怎么写上去的?

  • iotdb时序库在火电设备锅炉场景下的实践【原创文字,IoTDB社区可进行使用与传播】

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/618805869。

  • idea中使用maven-helper插件阅读排查【经典版】2

    卷末: 华为P40Pro拍照就是清楚表情包爱了爱了

  • kafka的副本以及分区与副本的关系

    benbenbingbing: ”ISR:表示和 Leader 保持同步的 Follower 集合“这句话有歧义,ISR中包含Leader的

  • k8s的架构组成

    普通网友: 优质好文,支持支持。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

大家在看

  • 计算机的错误计算(五) 268
  • vulnhub靶场-hackme打靶教程 256
  • [大师C语言(第二十九篇)]C语言函数探秘
  • 深入理解Qt多线程编程(QtConcurrent) 1103
  • 网络标准架构--OSI七层、四层

最新文章

  • springcloud第4季 分布式事务seata作用服务搭建
  • springcloud第4季 springcloud-gateway网关filter案例场景
  • iotdb时序库在火电设备锅炉场景下的实践【原创文字,IoTDB社区可进行使用与传播】
2024
06月 3篇
05月 12篇
04月 7篇
03月 20篇
02月 4篇
01月 9篇
2023年196篇
2022年234篇
2021年294篇
2020年218篇
2019年222篇
2018年25篇
2017年44篇
2016年83篇
2015年29篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司兴安盟企业网站设计推荐舟山如何制作网站推荐宁波seo优化公司亳州网站推广多少钱防城港网站排名优化报价泸州建设网站公司恩施seo优化推荐延边建网站多少钱临沂如何制作网站价格巴中网站制作设计公司济宁企业网站建设推荐淮南设计网站推荐菏泽seo网站推广哪家好丹竹头百度网站优化公司玉林模板网站建设价格恩施优化推荐北海网站改版推荐果洛网络广告推广报价四平网站优化按天收费价格咸宁高端网站设计阳泉关键词按天计费报价长春网站优化排名价格文山品牌网站设计哪家好延安阿里店铺运营湛江网站改版哪家好喀什设计网站多少钱荷坳模板推广哪家好南昌seo优化哪家好贵阳网页设计坑梓seo网站推广推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化