DDD优秀实践及总结——规范总结
1、尽量使用DP,将隐型概念显性化;
2、将数据校验、错误处理、属于该DP的行为放到DP创建中;
3、抽象Entity,Entity中包含了数据和行为;
4、抽象第三方服务;
5、抽象中间件;
6、封装业务逻辑,使用DP封装跟Entity无关的无状态计算逻辑,使用Entity封装单对象的有状态行为;
7、使用Domain Service封装多对象逻辑;
8、Entity和数据模型不需要完全一致,且尽量使用DP;
9、Repository接口名称不要使用底层实现的语法,操作Entity对象,不操作底层DO;
10、Aggregate Root的Repository采用Snapshot的方案,保留子Entity的修改状态,避免全部子Entity的更新(可能会带来数据不一致问题,要加入乐观锁);
11、Entity创建使用constructor或者factory,并做参数强校验;
12、Entity尽量避免public setter;
13、Aggregate Root中的子Entity只能通过聚合根保证子的一致性;
14、Entity不可以强依赖其他Entity或者Domain Service;
15、Entity的行为只能影响本Entity;
16、Domain Service包含三种形式:单对象策略型(通过方法入参传入领域服务)、跨对象事务型、通用组件型。
17、使用策略模式封装领域规则;
18、使用领域事件显性化领域里其他Entity的变化;
19、Interface层的Http和RPC接口,返回值为Result,捕捉所有异常;Application层的所有接口返回值为DTO,不负责处理异常;
20、一个Interface层的类应该是“小而美”的,应该是面向“一个单一的业务”或“一类同样需求的业务”,需要尽量避免用同一个类承接不同类型业务的需求;
21、ApplicationService的接口入参只能是一个Command、Query或Event对象,CQE对象需要能代表当前方法的语意;
22、CQE对象的校验应该前置,避免在ApplicationService里做参数的校验;
23、针对于不同语意的指令,要避免CQE对象的复用,比如新增和更新;
24、Application层、Domain层以及Infrastructure层遇到错误直接抛异常,Interface层统一捕捉异常避免异常堆栈信息泄露到API之外;
DDD优秀实践及总结——规范总结相关推荐
- 3 需求工程优秀实践
3.1需求开发过程框架 需求工程包括获取.分析.规范说明和验证.但不能只是简单以一种一次性线性顺序来实施这些实践.实际上,这些活动是相互交织.渐进的和迭代式的,如下图所示. "逐步完善细节& ...
- 分布式缓存的25个优秀实践与线上案例 done
杨彪,蚂蚁金服技术专家,<分布式服务架构:原理.设计与实战>和<可伸缩服务架构:框架与中间件>作者.近10年互联网和游戏行业工作经验. 本文节选自即将出版的<可伸缩服务架 ...
- 针对自动化测试的23种Node.js优秀实践
如果您是一名开发者,那么对Node.js一定不陌生.由Node.js提供的各种优秀实践,可以方便您大幅地提高应用的性能.而在JavaScript的支持下,Node.js可以运行在服务器上,以方便开发人 ...
- 修炼成高薪Java程序猿——从优秀的Java命名规范开始
优秀的Java命名规范 1命名规范 1.1 package (*) 包名全部由小写的ASCII字母组成,用"."分隔. 在此项目中,所有的包均以"com.proste ...
- COLA 4.x和DDD项目实践精粹
在<COLA 4.x架构入门和项目实践>专栏基础之上,对项目开发实践进行了提炼和总结:同时,针对其中的一些知识点进行扩展和延伸. 专栏介绍 领域驱动设计(Domain Driven Des ...
- 代码走查优秀实践集合
公司内部人员总结的,感觉很有成效,分享一下: 代码走查优秀实践集合 轰轰烈烈的代码质量竞赛结束了,各产品部陆陆续续开展了代码走查交流会,会上各位组长或代码走查负责人分享了优秀的实践,也提出了各式各样的 ...
- 您遵循过这些Jenkins优秀实践吗?
一.时刻保持Jenkins的安全 在默认配置情况下,Jenkins是不执行任何安全检查的.也就是说,除一些简单基本的Jenkins配置.作业和构建,网站的访问者几乎可以在Jenkins的主数据库中执行 ...
- 第六十二期:腾讯云发布“小程序·云开发十大优秀实践”:猫眼、唯品会等入选
作者:周小白 [TechWeb]10 月 19 日消息,今日,腾讯云首次对外公布了"小程序·云开发十大优秀实践",包括白鹭引擎.千墨科技.腾讯新闻.即速应用.微盟.唯品会.猫眼.香 ...
- 腾讯云发布“小程序·云开发十大优秀实践”,猫眼、唯品会、香格里拉等入选
10月19日,腾讯云联合微信小程序团队举办"小程序·云开发"技术峰会.会上,腾讯云首次对外公布了"小程序·云开发十大优秀实践", 包括白鹭引擎.千墨科技.腾讯新 ...
最新文章
- 什么是新IP的四层网络技术
- ImportError: cannot import name ‘DtypeArg‘ from ‘pandas
- 学python买什么书好-python官方推荐30本面向初学者的书籍!你看过几本?
- 回过头来看对象的四种状态强软弱虚引用的理解
- 软考-信息系统项目管理师-战略管理
- hdu5399(模拟)
- Codeforces - 961E Tufurama
- 泉州经贸职业技术学院计算机系,部门简介-泉州经贸职业技术学院网络电教中心...
- [转]unity3D游戏开发之GUI
- 匿名提问:rm -rf了怎么办?
- POJ 2044 Weather Forecast
- Spark Scala当中reduceByKey的用法
- PHP学习总结(10)——PHP入门篇之自定义网站根目录
- LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
- 文件名lin.php是什么,Linsexu程序安装PHP详细软件教程
- HttpServletRequest中文乱码
- 详解animate.css动画插件用法
- Atitit rest框架选型总结 Resteasy 实现 但是麻烦 作为JAX-RS的标准实现,RestEasy还具有以下亮点特性: 1)不需要配置文件,只要把JARs文件放到类路径里面
- ida pro6.4 linux安装使用
- 「Golang」sync.Once用法以及源码讲解