可能是我大脑不是很聪明的缘故,网上讲的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领域模型浅显易懂的示例实战相关推荐

  1. Anchor Boxes示例实战

    Anchor Boxes示例实战 目标检测算法通常对输入图像中的大量区域进行采样,判断这些区域是否包含感兴趣的目标,并调整这些区域的边缘,以便更准确地预测目标的真实边界框.不同的模型可能使用不同的区域 ...

  2. DDD领域模型、贫血模型、充血模型概念总结

    DDD领域模型 领域模型是对领域内的概念类或现实世界中对象的可视化表示.又称概念模型.领域对象模型.分析对象模型.它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系. 业务 ...

  3. 【DDD】2万字讲解DDD,从理论到实战(代码示例)

    文章目录 基础概念 领域 限界上下文 贫血模型和充血模型 贫血模型 充血模型 实体和值对象 实体 值对象 聚合 聚合根 领域事件 领域事件相关案例 事件风暴 DDD分层架构 用户接口层 应用层 领域层 ...

  4. DDD—领域模型映射代码结构

    一.一级代码目录 前面<DDD-分层架构,洋葱架构,六边形架构>一文中讲到,领域模型的业务逻辑从领域层,应用层到用户接口层逐层组合和封装,对外提供灵活的服务,既实现了各层的分工和解耦,也实 ...

  5. DDD领域模型有必要么?

    领域模型的基本概念 文章抽出来的知识点是个人差不多整理的,有更好的请告知,轻喷. 我们先来看看一篇我关注博主的DDD入门文章从零开始的领域驱动设计 美团技术文章参考  领域驱动设计在互联网业务开发中的 ...

  6. Fegin远程调用示例实战

    一.需求描述 我们要做的,通过A服务项目信息的多个code调用B服务查询对应code的用户信息. A服务的code rpc 调用 B服务的用户信息 二.示例代码 ProjectController @ ...

  7. 层次聚类示例实战教程

    聚类是一种机器学习算法,它试图把数据集的观测值分为不同的簇.即相似观测值聚为簇,反之不相似的在不同簇中.聚类属于无监督,它尝试从数据集中发现结构,而不是预测响应变量的值. 聚类通常用于市场分析,例如某 ...

  8. SpringMVC详细示例实战教程

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--conf ...

  9. 史上最全最强SpringMVC详细示例实战教程

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

最新文章

  1. PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。
  2. 原价买了二手机,我是如何做到的?
  3. Windows上安装Mysql解压缩版教程
  4. CodeForces - 1504C Balance the Bits(思维+构造)
  5. linux开启和使用swap
  6. js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素...
  7. Linux文件系统下的分区和挂载
  8. 两直线夹角求解-Python编程实现
  9. w10投影全屏设置_win10投影仪怎么铺满全屏|win10投影器全屏的设置方法
  10. 7.camera驱动08-全志-media framework
  11. 测试人员的绩效考核指标
  12. OutMan——单例模式、代理模式以及iOS沙盒(sandbox)机制
  13. 2019上半年软件设计师考试体会
  14. warning: use of old-style cast
  15. 数学_余弦距离不满足三角不定式简单证明
  16. php图片上传功能,实时显示上传的图片
  17. 软件测试藏宝图中文版
  18. Hide column
  19. Springboot游戏道具在线交易平台毕业设计源码171956
  20. 幂等性问题和解决方法

热门文章

  1. 利用百度AI文字识别实现网页游戏火影忍者OL自动定向劫镖功能(python)
  2. 【致自己】如果你发现这件事怎么特别难,那么有可能这次的收获,特别大
  3. PHP在线考试平台管理系统源码带文字搭建教程
  4. orcl基础笔记--单行函数
  5. 干洗店软件,洗衣洗鞋线上下单小程序开发
  6. 心灵鸡汤-迷茫-困惑-付出没有得到回报
  7. 您没有可用的IOS App套装ID 无法创建苹果app的问题
  8. 基于Solr的智能化人工智能与智能图像识别
  9. Spring循环依赖问题解决
  10. 硬件课程设计:基于STM32的多功能播放器之聊天功能