惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
罗磊的独立博客
人人都是产品经理
人人都是产品经理
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
L
Lohrmann on Cybersecurity
博客园 - 【当耐特】
量子位
Last Week in AI
Last Week in AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
Cyber Attacks, Cyber Crime and Cyber Security
腾讯CDC
有赞技术团队
有赞技术团队
Cyberwarzone
Cyberwarzone
T
Tor Project blog
V
V2EX
L
LINUX DO - 热门话题
Security Latest
Security Latest
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
NISL@THU
NISL@THU
C
Cisco Blogs
T
Tailwind CSS Blog
G
GRAHAM CLULEY
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
小众软件
小众软件
K
Kaspersky official blog
博客园 - 司徒正美
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
S
Schneier on Security
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
The Exploit Database - CXSecurity.com
Scott Helme
Scott Helme
J
Java Code Geeks
博客园 - 聂微东
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
C
Cybersecurity and Infrastructure Security Agency CISA
F
Fortinet All Blogs
T
Threat Research - Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
雷峰网
雷峰网

博客园 - luckygxf

架构积累-系统划分 架构积累-软件架构终极目标 javascript构造方法 数据库连接池初始连接 分布式系统CAP理论(一) 数据库连接太多排查(一) 审批流程-节点自动审批通过 防表单重复提交 深分页问题 devops 对象存储迁移-组件上线 工作效率提升 新需求开发-重构老的逻辑 js析构赋值 框架的好处和不足 React框架Hello world 数据库表设计在哪个接口 前端代码(一) 高内聚,低耦合 对象存储改造 mermaid初体验 业务逻辑优化-解决提示词问题打分不准 idea 插件envfile初体验 防盗链-防盗用链接 springboot项目启动小技巧 github托管网站 AI MCP开发 AI中 MCP 作用 mapconstruct 初体验 架构积累-解耦与防腐 表创建索引的重要性 重构注意事项(一) drawio初体验 六边形架构 架构积累-依赖注入和SOLID原则 工作总结-定时任务 工作总结-知识通关需求上线 工作总结-演练场景映射方案 工作总结-MVP 工作总结-需要学习的方向 工作总结-接口优化 python asyncio demo 工作总结-sse接口心跳 工作总结-问题筛选方案 工作总结-工具分享 工作总结-提示词优化 工作总结-工作优先级 工作总结-灰度发布
需求实现-ddd四层架构实现
luckygxf · 2026-05-11 · via 博客园 - luckygxf

接到一个需求,领导让从业务建模、技术建模、模块拆分、微服务设计、数据库表设计,在公司设计平台上都走一遍。需求交付又有时间节点,时间有点紧

在公司设计平台上建模做了一个初版,今天领导检查的时候,提了很多意见,领导还是有点东西的。领导也在考虑沟通问题,之前都是一起线下过设计。这次他把问题整理好了发我,我再回检,明天再和他线下对下

需求实现的时候,公司推荐两种架构选择。一个是传统的mvc三层架构模式,一个ddd四层架构模式。三层架构主要用于简单的业务场景,业务简单,主要是数据库的操作。ddd四层机构主要是应用于复杂的业务场景,比如需要和外部系统交互,接收消息中间件消息,需要调用外部接口,需要使用缓存中间件,业务逻辑复杂等。

如果需要调用外部接口,需要设计防腐层。ddd四层架构的domian领域层的support包或者领域服务定义接口,基础设施层实现接口,访问外部接口,实现防腐

业务逻辑复杂:三层架构,所有业务都散在在service层,service层逻辑过多,臃肿,不易维护。可以把业务逻辑沉淀到领域对象中,集中管理,拆分service业务逻辑

一、业务建模

角色:

  有个角色我定义的是xx微服务,领导觉得可以再具体点xx系统

命令:

  我开始以为四层架构的命令是领域对象的方法,命令是一个实体,封装了要做的事情,类似于DTO,不过主要是封装要做的事情需要的字段。有个命令我写的是名单写入数据库,业务建模不应该和技术关联起来。可以修改成保存要迁移的名单

  需求地图识别的时候,识别了很多命令。因为我因为命令是对象的一个方法,就没有把命令放到领域对象里面。其实,命令是一个领域对象的职责边界里面的东西,是一个单独的类,类似于DTO,封装了命令的字段。比如取消订单命令,CancelCommand是一个单独的类,里面有要取消的订单id。

领域对象识别:

  之前有个类似的需求实现,我参考的之前的实现写领域对象。之前的实现方案有,通过多种条件过滤用户。我把数据库里面查询的表,直接作为领域对象。其实抽象都是客户,不用新建其他xx客户

还有些其他的意见,明天再梳理下和领导对下。ddd四层架构在公司应用应该比较久了,看代码提交记录,应该有几年了。确实比mvc三层架构要好一些,在解耦、防腐、维护、扩展这些确实要好一些