什么是DDD开发模式
DDD尝试解决业务系统(逻辑+CRUD)开发的复杂性问题,这种复杂性是由于复杂的业务规则,业务逻辑变化。
一般系统的业务逻辑、复杂性在于:流转判断多,专业规则多,计算量大。而DDD模式的解决的方式是通过分层,即业务逻辑、实现分层,以业务逻辑为核心进行开发。
DDD开发是基于对象开发的更为抽象的阶段,通过业务领域的分析,获得业务逻辑、规则的清晰边界,分类,而后进行开发。
以下从数据开发模式分析,对比DDD开发模式的路径、定义、实现以及适用的场景。
1. 数据驱动开发
基于数据开发的问题:
过早地进入了实现领域的讨论,可能会忽略重要的业务规则,也不利于我们技术和业务持续地进行交流 。技术复杂性和业务复杂性混杂,容易顾此失彼。
分层结构的问题:
2. 领域驱动设计
要点:统一语言,抽象层面的领域模型,抽象度高利于业务模型重用,专注业务领域,业务文档与代码层的统一,业务逻辑集中不分散
面向对象(业务)——领域对象,包括属性、业务方法与行为,关联
实现过程探讨:
1. 业务需求分析, 确定业务对象、属性、逻辑、规则,建立业务文档,明确技术层面不能影响业务逻辑。
2. 开发独立:界面层,应用层(日志,事务,持久化等系统基础设施层面与领域无关层),业务逻辑层
3. 技术层级的解耦:IOC,AOP,(反射)
以上: 有利于信息化(核心业务高重用,独立,基础设施不重复搭建,逻辑隔离开发简单),支持持续构建,集成,敏捷开发
实现工具:mindmap, uml(泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖), 时序图,流程图( Opt 选项 ,alt 抉择 ,loop 循环 ,break 中断 ,par 并行 ,critical 关键 ,seq 弱顺序 ,strict 强顺序)
TDD开发
补充:
业务规则-Business Rules :业务规则是指对业务定义和约束的描述,用于维持业务结构或控制和影响业务的行为。业务规则技术的基本思想是将系统处理的业务逻辑从程序代码中抽取出来,将其转变为简单的业务规则,以结构化的业务规则数据来表示业务行为,采用类自然语言来描述,并集中存储在规则库中。业务规则由业务人员创建、实时更新和调试,业务规则之间的复杂逻辑关系由规则引擎处理。业务规则技术改变了传统的、以过程形式处理业务逻辑的方式。
Bounded ContextsMap 业务边界,ACL--访问操作的保护,interface, Down UP domain;OHS
Aggregate 聚合,业务上具有强关联的业务对象,在场景中可以作为一个范围内的对象分析。
Entities 实体,具有唯一标识,例如汽车-发动机编号,单据-单据编号,
Value Object 值对象,例如syscode, codeTable,没用唯一标识,具有强烈的数据属性
Services 无状态逻辑,
Domain Events,Domain 层的对象应该保持简单,不依赖于任何的第三方外部框架,保持灵活度,
Factories
Respositories 数据资源的使用, Persistence Object 持久化对象
一个分层整洁架构的思路:
什么是DDD开发模式相关推荐
- 常见软件项目开发模式思考
一.软件项目 在2000左右 程序员还是一种比较罕见的工作,那是的个人台式机还是当时富裕家庭的高级娱乐用品,一开始网络程序员部分前后端,PHP.JSP.ASP这些技术形成了最早的网络程序.BS 系统 ...
- 设计模式之美-11| 实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?
十一.设计模式之美-11| 实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统? 一.钱包业务背景介绍 一个简单的钱包业务功能如下 1.充值 用户通过三方支付渠道,把自己银行卡账户内的钱, ...
- 如何利用基于充血模型的DDD开发一个虚拟钱包系统?
上篇文章总结了一些理论知识的铺垫性讲解,讲到了两种开发模式,基于贫血模型的传统开发模式,以及基于充血模型的 DDD 开发模式.今天,我们正式进入实战环节,看如何分别用这两种开发模式,设计实现一个钱包系 ...
- TDD、BDD、ATDD、DDD 软件开发模式
四个开发模式意思: TDD:测试驱动开发(Test-Driven Development) BDD:行为驱动开发(Behavior Driven Development) ATDD:验收测试驱动开发( ...
- 前后端分离开发模式下后端质量的保证 —— 单元测试
概述 在今天, 前后端分离已经是首选的一个开发模式.这对于后端团队来说其实是一个好消息,减轻任务并且更专注.在测试方面,就更加依赖于单元测试对于API以及后端业务逻辑的较验.当然单元测试并非在前后端分 ...
- ultraedit 运行的是试用模式_单元测试 —— 前后端分离开发模式下后端质量的保证...
概述 在今天, 前后端分离已经是首选的一个开发模式.这对于后端团队来说其实是一个好消息,减轻任务并且更专注.在测试方面,就更加依赖于单元测试对于API以及后端业务逻辑的较验.当然单元测试并非在前后端分 ...
- DDD的模式与实践案例
花名:神帅,毕业5年,混迹于大小厂打怪刷实战经验.资深Java开发工程师. 在企业服务领域和电商领域均有积累,最近一直在研究DDD和低代码领域,对后端微服务业务平台架构的实践和发展比较感兴趣. 公众号 ...
- 网上商城代码实现_中国中铁网上商城转型敏捷开发模式,实现快速反应、快速迭代...
△北研中心的同事给业务部门演示迭代成果中国中铁网上商城成功转型敏捷开发模式,实现快速反应.快速迭代.切实解决公司内部以及合作方的业务需求,更好服务多样化的客户群体.经历了两次每2周为一迭代的短期快速开 ...
- 飞桨深度学习开源框架2.0抢先看:成熟完备的动态图开发模式
百度飞桨于近期宣布,深度学习开源框架2.0抢先版本正式发布,进入2.0时代.其中一项重大升级,就是推出更加成熟完备的命令式编程模式,即通常说的动态图模式.同时在该版本中将默认的开发模式定为动态图模式, ...
- OpenSource的开发模式探讨
为什么80%的码农都做不了架构师?>>> OpenSource的开发模式探讨zt http://mail.mailer.com.cn:81/article/articlevie ...
最新文章
- 实验四-常用图像增强方法
- 人脸识别中的人脸监测、定位校准和对比等技术
- cookie mapping
- Asp.Net MVC 模型(使用Entity Framework创建模型类)
- 图论--2-SAT--暴力染色法模板(字典序最小解) RQ的板子
- VS2008调试总结
- 关于Binder的点点滴滴(二)
- oracle比较两个字段相似度,比较两个字符串的相似度
- tcpdump显示udp包_TCPdump抓包命令详解
- mysql中的concat和group_concat的用法
- 天天模拟器显示获取服务器失败,天天模拟器FAQ、天天模拟器常见问题快速帮助...
- UniBeast使用心得
- Lottie动画 轻松使用
- java基于uni-app框架的民宿客房预订系统 小程序
- HIVE中 ROW_NUMBER() OVER() 函数
- 第8章.商品详情页面之thymeleaf
- 银行业务--资产业务
- 1.1 行列式(1)
- Mastercam 2017 图形阵列(矩形阵列与环形阵列)
- 有数列:9,99,999,9999...,编程计算前10项的值。