阅读文章《DDD 领域驱动设计-如何 DDD?》的阅读笔记
文章链接:
https://www.cnblogs.com/xishuai/p/how-to-implement-ddd.html
文章作者: 田园里的蟋蟀
首先感谢作者写出这么好的文章。
以下是我的阅读笔记:
1、进行战略建模时不要考虑技术性的东西,不要考虑战术建模的概念,需要搞清楚业务,搞清楚业务的核心,把业务核心功能描述出来。
如文章中举例,微博的评论提到功能,描述其业务:评论时@一个人,然后通知被@的人
核心业务是两个:1、匹配到@的人,2、通知@的人
2、作者把Mention,即“提到”作为一个聚合根,并且定义了两个方法:抽离出@的对象,通知@的对象。
丰富了Mention这个领域模型。当提到规则改变时只需要修改Mention。
这个思考过程有几个点:理清核心业务是匹配人和通知人;把提到作为一个领域模型,一个聚合根;
给这个实体赋予两个方法,变为充血模型。
应用层的应用服务只是牵涉到流程,而不牵涉到业务,只是起到了聚合操作的作用:抽取用户、判断更新、持久化、通知
3、作者的另一个例子是 “权限申请和审核系统”
首先在了解业务的基础上进行战略建模以及描述出核心业务:
业务描述:用户申请权限,管理员后台审核权限。
核心业务是什么,以及判断的依据是什么呢。
核心业务的判断条件:一般核心业务包含在简单的描述里,比如“提到”系统里的“抽离”和“通知”
还有一种方式是判断其是否经常发生,对于业务流程一般不发生变化,变化的是核心业务,DDD应对的就是这种变化。
核心业务就是申请本身,这里我称之为申请单。
我的判断:
核心领域:申请单
申请单作为聚合根和实体,可以包含通知用户审核结果和开通权限两个领域
领域事件:开通权限和通知用户。
疑问:验证用户信息和验证是否有资格申请的验证放哪里。
通知用户是否需要作为一个实体。
解决疑问(注:我的方法是错误的):验证用户信息、验证资格和通知都可以放在申请实体这个领域模型里,作为领域事件。
反思:作者把验证用户信息和资格放在了领域服务。我是放在领域事件里,我想错了。
阅读文章《DDD 领域驱动设计-如何 DDD?》的阅读笔记的更多相关文章
- DDD领域驱动设计 ---- 系列文章
C#进阶系列——DDD领域驱动设计初探(七):Web层的搭建 C#进阶系列——DDD领域驱动设计初探(六):领域服务 C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用 C#进阶系 ...
- DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(2)
上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDbContext 的实践(1)> 阅读目录: 抽离 IRepository 并改造 Reposi ...
- 领域驱动设计(DDD)的实践经验分享之ORM的思考
原文:领域驱动设计(DDD)的实践经验分享之ORM的思考 最近一直对DDD(Domain Driven Design)很感兴趣,于是去网上找了一些文章来看看,发现它确实是个好东西.于是我去买了两本关于 ...
- DDD领域驱动设计:领域事件
1 前置阅读 在阅读本文章之前,你可以先阅读: DDD领域驱动设计是什么 DDD领域驱动设计:实体.值对象.聚合根 DDD领域驱动设计:仓储 MediatR一个优秀的.NET中介者框架 2 什么是领域 ...
- DDD领域驱动设计:CQRS
1 前置阅读 在阅读本文章之前,你可以先阅读: DDD领域驱动设计是什么 DDD领域驱动设计:实体.值对象.聚合根 DDD领域驱动设计:仓储 MediatR一个优秀的.NET中介者框架 2 什么是CQ ...
- 浅谈我对DDD领域驱动设计的理解
从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...
- DDD 领域驱动设计-商品建模之路
最近在做电商业务中,有关商品业务改版的一些东西,后端的架构设计采用现在很流行的微服务,有关微服务的简单概念: 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独 ...
- DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(3)
上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDbContext 的实践(2)> 这篇文章主要是对 DDD.Sample 框架增加 Transa ...
- DDD 领域驱动设计-如何完善 Domain Model(领域模型)?
上一篇:<DDD 领域驱动设计-如何 DDD?> 开源地址:https://github.com/yuezhongxin/CNBlogs.Apply.Sample(代码已更新) 阅读目录: ...
- 领域驱动设计(DDD)部分核心概念的个人理解
领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...
随机推荐
- 进程 | 线程 | 当Linux多线程遭遇Linux多进程
背景 本文并不是介绍Linux多进程多线程编程的科普文,如果希望系统学习Linux编程,可以看[<Unix环境高级编程>第3版] 本文是描述多进程多线程编程中遇到过的一个坑,并从内核角度分 ...
- linux Host key verification failed.错误
Host key verification failed. 1. ssh-keygen -R 你要访问的IP地址 2. ssh-keygen -R 108.61.163.242
- API网关的用处
API网关我的分析中会用到以下三种场景. Open API. 企业需要将自身数据.能力等作为开发平台向外开放,通常会以rest的方式向外提供,最好的例子就是淘宝开放平台.腾讯公司的QQ开发平台.微信开 ...
- CDN概念
CDN的全称是Content Delivery Network,即内容分发网络.其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘" ...
- [js]vue小结
vue基础 - vue是一个渐进式框架 vue (视图渲染) components(路由机制) vue-router(路由管理) vuex (状态管理) vuecli (构建工具) - 库和框架 库如 ...
- JAVA 基础编程练习题32 【程序 32 左移右移】
32 [程序 32 左移右移] 题目:取一个整数 a 从右端开始的 4-7 位. 程序分析:可以这样考虑: (1)先使 a 右移 4 位. (2)设置一个低 4 位全为 1,其余全为 0 的数.可用~ ...
- checklist和基础安全知识
checklist和基础安全知识 https://book.yunzhan365.com/umta/rtnp/mobile/index.html 网络安全科普小册子 http://sec.cuc.ed ...
- 集群架构05·备份服务rsync
初识 开源,多功能,全量和增量的本地或远程数据同步备份的优秀工具,remote synchronization 俩服务器定/实时备份cron+rsync,数据同步,全网备份 一个rsync相当于scp ...
- VS.vs15
1.20190615 安装的 vs2015(cn_visual_studio_enterprise_2015_with_update_3_x86_x64_dvd_8923298.iso) 的目录为: ...
- Spring 控制器层如何调用DAO层
1.写上注解 @Autowired 2.声明一个变量 private UserDao userDao; 3.注意!Spring里面数据库对象操作类不需要实例化就能调用