DDD领域模型浅显易懂的示例实战
可能是我大脑不是很聪明的缘故,网上讲的DDD领域模型看的不太明白。不过看完下面的实战,估计就会懂了。
钱包业务示例
1,基于贫血模型的传统开发模式
这是一个典型的 Web 后端项目的三层结构。
- 实体类
- Controller层
- Service层
2,基于充血模型的 DDD 开发模式
领域模型层(可以大致理解为实体类加上封装的指令)
Service层(将入参转为领域模型层,执行)
总结
基于充血模型的 DDD 开发模式跟基于贫血模型的传统开发模式相比,主要区别在 Service
层。在基于充血模型的开发模式下,我们将部分原来在 Service 类中的业务逻辑移动到了一
个充血的 Domain 领域模型中,让 Service 类的实现依赖这个 Domain 类。
在基于充血模型的 DDD 开发模式下,Service 类并不会完全移除,而是负责一些不适合放
在 Domain 类中的功能。比如,负责与 Repository 层打交道、跨领域模型的业务聚合功
能、幂等事务等非功能性的工作。
基于充血模型的 DDD 开发模式跟基于贫血模型的传统开发模式相比,Controller 层和
Repository 层的代码基本上相同。这是因为,Repository 层的 Entity 生命周期有限,
Controller 层的 VO 只是单纯作为一种 DTO。两部分的业务逻辑都不会太复杂。业务逻辑
主要集中在 Service 层。所以,Repository 层和 Controller 层继续沿用贫血模型的设计思
路是没有问题的。
更多前沿技术,面试技巧,内推信息请扫码关注公众号“云计算平台技术”
DDD领域模型浅显易懂的示例实战相关推荐
- Anchor Boxes示例实战
Anchor Boxes示例实战 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的真实边界框.不同的模型可能使用不同的区域 ...
- DDD领域模型、贫血模型、充血模型概念总结
DDD领域模型 领域模型是对领域内的概念类或现实世界中对象的可视化表示.又称概念模型.领域对象模型.分析对象模型.它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系. 业务 ...
- 【DDD】2万字讲解DDD,从理论到实战(代码示例)
文章目录 基础概念 领域 限界上下文 贫血模型和充血模型 贫血模型 充血模型 实体和值对象 实体 值对象 聚合 聚合根 领域事件 领域事件相关案例 事件风暴 DDD分层架构 用户接口层 应用层 领域层 ...
- DDD—领域模型映射代码结构
一.一级代码目录 前面<DDD-分层架构,洋葱架构,六边形架构>一文中讲到,领域模型的业务逻辑从领域层,应用层到用户接口层逐层组合和封装,对外提供灵活的服务,既实现了各层的分工和解耦,也实 ...
- DDD领域模型有必要么?
领域模型的基本概念 文章抽出来的知识点是个人差不多整理的,有更好的请告知,轻喷. 我们先来看看一篇我关注博主的DDD入门文章从零开始的领域驱动设计 美团技术文章参考 领域驱动设计在互联网业务开发中的 ...
- Fegin远程调用示例实战
一.需求描述 我们要做的,通过A服务项目信息的多个code调用B服务查询对应code的用户信息. A服务的code rpc 调用 B服务的用户信息 二.示例代码 ProjectController @ ...
- 层次聚类示例实战教程
聚类是一种机器学习算法,它试图把数据集的观测值分为不同的簇.即相似观测值聚为簇,反之不相似的在不同簇中.聚类属于无监督,它尝试从数据集中发现结构,而不是预测响应变量的值. 聚类通常用于市场分析,例如某 ...
- SpringMVC详细示例实战教程
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...
- 史上最全最强SpringMVC详细示例实战教程
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...
最新文章
- PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。
- 原价买了二手机,我是如何做到的?
- Windows上安装Mysql解压缩版教程
- CodeForces - 1504C Balance the Bits(思维+构造)
- linux开启和使用swap
- js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素...
- Linux文件系统下的分区和挂载
- 两直线夹角求解-Python编程实现
- w10投影全屏设置_win10投影仪怎么铺满全屏|win10投影器全屏的设置方法
- 7.camera驱动08-全志-media framework
- 测试人员的绩效考核指标
- OutMan——单例模式、代理模式以及iOS沙盒(sandbox)机制
- 2019上半年软件设计师考试体会
- warning: use of old-style cast
- 数学_余弦距离不满足三角不定式简单证明
- php图片上传功能,实时显示上传的图片
- 软件测试藏宝图中文版
- Hide column
- Springboot游戏道具在线交易平台毕业设计源码171956
- 幂等性问题和解决方法