什么是DDD开发模式

article/2025/9/25 1:19:06

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 持久化对象

一个分层整洁架构的思路:

 


http://chatgpt.dhexx.cn/article/tZIoPXtS.shtml

相关文章

Scrum敏捷开发模式介绍与实践

文章目录 前言一、开发模式1. 瀑布流开发模式2. 迭代开发模式3. 螺旋开发模式4. 敏捷开发模式 二、敏捷开发模式三、敏捷模式1. Scrum2. Kanban3. XP4. Lean Startup 四、Scrum 敏捷开发模式1. 框架图2. 角色Scrum Master,SMProduct Owners, POSoftware …

什么是软件开发模式?

软件开发模式简介 1. 边做边改模型(Build-and-Fix Model) 好吧,其实现在许多产品实际都是使用的“边做边改”模型来开发的,特别是很多小公司产品周期压缩的太短。在这种模型中,既没有规格说明,也没有经过设…

T58 Office开发模式

加Check box https://www.howtogeek.com/204036/how-to-add-check-boxes-to-word-documents/ 点击设计模式激活。

C# 软件开发模式、设计模式、设计原则和架构

一、怎样做好软件开发? 软件是数据算法的集合体,是利用一定方法将数据进行合理的组合和分配的产物。其实在人们的生活当中,处处都充满着资源(数据)和方法(算法),成功的人都是善于使用他们总结的方法来使用资源的。软件开发也不例外…

螺旋式开发模式

螺旋模型是一种演化 软件开发过程模型,它兼顾了 快速原型的 迭代的特征以及 瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个…

常见的开发模式和不常见的开发模式

1. 瀑布式开发 瀑布模型的优点: 1、为项目提供了按阶段划分的检查点。 2、当前一阶段完成后,您只需要去关注后续阶段。 3、可在迭代模型中应用瀑布模型。增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的…

软件开发的11种模式

软件开发的11种模式 1,边做边改模型(Build-and-Fix-Model) 在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。在这个模型中,开发人员拿到项目立即根据…

常见的开发模式模式

前言 主要是了解常见的开发模式,从而理解测试贯穿在整个软件研发过程中的定位。 一、常见的开发模式 引用林子老师梳理的开发模式,主要包括以下几种: 测试流程通常跟软件开发流程紧密相关,需要基于开发流程来定义。基于企业不同…

云手机虚拟服务器地址和端口,手机服务器地址端口号

手机服务器地址端口号 内容精选 换一换 当后台重新配置邮箱服务器等信息后,手机端WeLink一定要退出重新登录一次。我们常用的邮箱,比如:QQ邮箱、163邮箱、腾讯企业邮箱、网易企业邮箱、263企业邮箱等常见邮箱,可以参考常见问题 > 客户端-邮件里的“常见的IMAP邮箱配置方…

使用正则表达式验证手机号码

使用正则表达式验证手机号码 开发工具与关键技术:VS2015、正则表达式 作者:易金亮 撰写时间:2019.07.07在项目中,总会涉及到数据的新增,比如新增用户信息等,而说到新增用户信息,就离不开用户的…

安卓搭建虚拟服务器,安卓手机搭建云服务器

安卓手机搭建云服务器 内容精选 换一换 本文介绍使用云手机服务时需要了解的基本概念。云手机是一台包含原生安卓操作系统,具有虚拟手机功能的云服务器,简单来说,云手机=云服务器+Android OS。您可以远程实时控制云手机,实现安卓APP的云端运行;也可以基于云手机的基础算力…

JS判断输入手机号码是否正确

JS判断输入手机号码是否正确 现在中国地区的号码 中国电信号段133、149、153、173、177、180、181、189、190、191、193、199 中国联通号段130、131、132、145、155、156、166、167、171、175、176、185、186、196 中国移动号段134(0-8)、135、136、137、138、139、1440、147、…

android qq账号登陆验证手机号码,注册QQ号如何跳过手机验证

QQ的安全性在逐步提高,而我们申请QQ的过程也越来越复杂了。许多用户不希望申请QQ时透露手机号码这类隐私信息。所以很少人使用需要手机验证的手机申请方式,所以电脑申请QQ成为主流,但电脑申请方式在申请过一次QQ号码之后(不论成功与否)就不能…

虚拟号码怎么开通?

虚拟码号的开通方式基本一样 一、首先是企业实名,上传企业的证明文件,法人证件。 二、然后是提出开号需求,号码数量,号码区域 三、然后缴纳费用 四、等待3-8个工作日开号 通过API或者SDK接口接入自己的系统,要不就…

自定义HorizontalScrollView嵌套HorizontalListView实现手势监听、按钮监听横向滚动功能

今日空闲花了点时间对以前自主实现的项目功能进行改进和优化, 其实一些界面的小功能有时候没实现过,也没经验类似项目功能经验,反而耗费的时间会更多。下面我所描述的界面功能就是我在对用RecyclerView控件不熟悉的情况下使用了HorizontalScr…

ScrollView/HorizontalScrollView常用技巧,附源码

ScrollView是ViewGroup的派生类,ViewGroup是View的派生类。 屏幕大小总是有限制的,对移动设备来说更是如此。当有很多内容需要显示的时候,一屏显示不完时,就需要使用滚动的方式。 ScrollView只能包含一个直接子vi…

Android 自定义 HorizontalScrollView 横向滑动效果

自从Gallery被谷歌废弃以后,Google推荐使用ViewPager和HorizontalScrollView来实现Gallery的效果。的确HorizontalScrollView可以实现Gallery的效果,但是HorizontalScrollView存在一个很大的问题,如果你仅是用来展示少量的图片,应…

Android ScrollView、NestedScrollView、Horizo​​ntalScrollView 等

在这篇文章中,我们想看看几个滚动视图的变体或子类以及它们是如何使用的。以下是我们迄今为止涵盖的变体: ScrollView - 超类 NestedScrollView - 子类 Horizo​​ntalScrollView - 子类 StickyScrollView - 子类和第三方库。 ParallaxScrollView - 子类…

Android横向滑动加载更多的控件的实现---HorizontalScrollSlideView

Android横向滑动加载更多的控件的实现—HorizontalScrollSlideView 需求 之前公司业务要求做一个横向滑动的,可以加载更多的控件,第一时间想到的就是 RecyclerView 来实现 ,后面仔细想想滑动拦截不好控制等等 所以就换了个思路来实现了。思…

Android HorizontalScrollView 水平滑动 在listview上面动态添加图片

Android HorizontalScrollView 水平滑动 listview 上动态添加图片 最近遇到了个 在listview展示广告的需要动态添加图片 如图: 使用了 horizontalScrollView 在listview上进行添加 java代码: package com.baozi.bzhorizontalscrollview;impor…