小团队也能做DDD-上篇(3)

简介: 小团队也能做DDD-上篇(3)

image.png


三、模块编码


传统的三层结构是web,service,dao,这个大伙都很熟悉,一个业务流程稍微复杂点会导致service里面的代码变成大泥球,我在上一份工作中,见过一个service类达到上万行,维护及其痛苦,怎么痛苦法呢,就是每次转测试,都会产生20多个bug,改完又会出现新的,一轮一轮无法收敛。我实在受不了,就跟项目经理申请重构,项目经理是不同意的,没办法只能立军令状,就开干了,最终一万多行代码变成4000行左右,bug终于收敛。


解决service层大泥球的一个方法是分离复杂性,把service分为应用层和领域层,这块内容可以参考王林在infoq的文章


https://www.infoq.cn/article/A3cgSUWuRulXHl2c_dUr,文章中提到了一个架构原则是业务和技术分离。领域层放业务逻辑,应用层放技术逻辑,复杂性降低,并且领域层更便于测试。


image.png


DDD战术设计就是把业务逻辑放到最核心位置,整洁架构和六边形架构也是如此,跟业务相关的代码写到实体,值对象和领域服务里面,一些事务,缓存等技术相关代码写到应用服务里面。


例说明:购物车有个操作是添加商品到购物车,应用层


ShoppingCartApplicationService把事务,缓存处理掉,核心业务逻辑在ShoppingCart这个领域对象里面。


领域层代码如下:


image.png


应用层代码如下:


image.png


四、总结



DDD的统一语言在软件开发过程中能帮助业务知识更好的传递,限界上下文能指导复杂系统的拆分,战术设计能帮助代码更好的分层。


有的公司虽然没有用DDD这么一套组合拳,可能已经在利用这些好的方法来开发软件,其实DDD提供一套方法论,也不是必须全部用上,完全可以只借鉴其中一部分。比如DDD的统一语言是通过降低业务知识的传递提升效率,可以应用到实际开发中。


举一个实际的例子,很多企业内部系统也采用了前后端分离,然后用前端开发和后台开发两拨人分别开发,再接口联调,联调成本很大,完全可以换一种方式,让后台开发来做前端,节省联调成本。

那这里可能有人有疑问,后台开发做前端会不会效率很低?其实只要让前端提供了架子和前端组件,再辅助一些组件使用文档和代码示例,后台开发完全可以很快上手,而节省的联调成本会很可观。


最后想说一句,方法论能提供指导,但也不要生搬硬套,需要根据自身情况进行裁剪,灵活运用。

相关文章
|
4月前
|
缓存 架构师 中间件
成为工程师 - 如何做DDD领域驱动设计?
成为工程师 - 如何做DDD领域驱动设计?
|
5月前
|
中间件 BI 测试技术
【实践篇】领域驱动设计:DDD工程参考架构
领域驱动设计(DDD)参考架构旨在为团队提供DDD实践的起点,强调业务与技术的分离,考虑多种架构风格如分层、六边形等。它包括多限界上下文结构,每个上下文内有应用层(不含领域逻辑)、领域层(含领域模型和事件)和网关层。接入层负责外部请求的处理,业务层协调不同上下文。组件包括Start(启动)、Common(通用)、API、Facade、Application Service、External API、Query、Domain和Gateway,各组件有明确的职责和依赖关系,如Gateway处理技术细节并作为系统与外部的接口。架构设计是多因素权衡,适应实际工程需求。
250 0
|
消息中间件 开发者
DDD领域驱动设计实战(六)-领域服务(上)
DDD领域驱动设计实战(六)-领域服务
465 0
DDD领域驱动设计实战(六)-领域服务(上)
|
前端开发 架构师 Java
领域驱动设计DDD从入门到代码实践
在本文中,作者将借鉴《实现领域驱动设计》的做法,介绍领域驱动设计的基本概念的同时,用一个虚拟的公司和一个虚拟的项目,把领域驱动设计进行落地实践。
13397 9
领域驱动设计DDD从入门到代码实践
|
架构师 算法 测试技术
小团队也能做DDD-中篇
小团队也能做DDD-中篇
235 0
|
存储 开发框架 Java
「软件设计」权威领域驱动设计(DDD)简介
「软件设计」权威领域驱动设计(DDD)简介
|
Web App开发 机器学习/深度学习 数据可视化
OneCode 领域驱动设计(DDD)技术实践(一)
OneCode-DSM(以下简称DSM)工具集是建立是以OneCode低代码引擎为基础专注于低代码建模应用的高阶建模工具。 在OneCode引擎中,出了为普通用户提供无代码的拖动设计器,低代码的业务逻辑编排器,之外还提供了供专业业务领域专家的使用的DSM建模工具。
|
运维 架构师 前端开发
小团队也能做DDD-上篇(1)
小团队也能做DDD-上篇(1)
265 0
小团队也能做DDD-上篇(1)
|
设计模式 SQL 开发框架
DDD开篇
从知道DDD到现在已经很多年了,看了不少理论知识,在项目中也使用了DDD,碰到些问题,也有些思考,整理一下,上升一下,形成一种适合自身的方法论 在回顾过程中,首先追根溯源,什么是DDD?为什么要使用DDD?如何给别人阐述这些最基本的概念与理念,真是个难题
244 0
DDD开篇
|
自然语言处理 安全 架构师
DDD开篇总结
之前写了两篇《DDD开篇》[1]与《DDD应对复杂》[2],是时候总结一下了 对于DDD的启蒙,不管是国内还是国外思维逻辑都是一样的。或者说如果你想写本关于DDD的书,大纲似乎是一样的 首先DDD是什么?给出定义,定义有些抽象,难以一次性接受,那就通过以往问题引出DDD,这时模型、复杂度、开发流程都是自然附带出的概念,再后面就是DDD的知识结构是什么,最后就是讲解一个实例,也有些会把实例穿插到各个篇章中
215 0
DDD开篇总结