首页 > 其他分享 >ddd和重构

ddd和重构

时间:2024-05-15 22:30:35浏览次数:20  
标签:重构 domain dao application 抽象 ddd

在学习ddd的时候,有最大一个困惑就是:我应该把哪些抽象成为领域,哪些是作为一个聚合根呢?

一个能够完全驾驭某个系统DDD架构的人,他必须是领域专家+代码抽象高手,很明显这个不是一个容易的事情。

我们现在很多时候是“面向数据库表”编程,很多时候一个表就对应着一个model,然后就dao->service->controller层,给到外面使用。

可以在把一个叫XXService里面把spring的相关依赖,比如@Service,@Inject @Resource,删掉。 进行对象的抽取,封装,重构【这一步不一定能够马上重构完成,但是代码是一直迭代前进的,需要持续不断思考对象的抽象】直到新抽象出来的对象,不依赖于除了domain层的任何外部的包。

这个时候代码结构是:

  • controller
  • service
  • model
  • dao
    变成
  • application<-controller
  • domain <-service
  • infrastructure <- dao

至于domain如何从数据库取数,则从domain中新增iXxxRepo.java接口,由infrastructure实现,最后由application拼装domain层的能力,最终实现业务需求,由application屏蔽业务场景的差异

标签:重构,domain,dao,application,抽象,ddd
From: https://www.cnblogs.com/yudengc515/p/18194838

相关文章

  • 前端架构重构 - 设计文档
    框架选型:React-写React的感觉就是在写JavaScript。但React的缺点是冗余,它只是个View层,也只处理View层。Vue-Vue的定位是一个渐进式的MVVM框架。渐进式,就是学习曲线比较平缓,没那么陡峭。但这并不意味着Vue比React简单,React就比Vue复杂。Vue在框架层面......
  • 关于DDD和COLA的一些总结和思考
    写在前面:其实之前一直想汇总一篇关于自己对于面向对象的思考以及实践的文章,但是苦于自己的“墨迹”,一延再延,最近机缘巧合下仔细了解了一下COLA的内容,这个想法再次被勾起,所以这次一鼓作气,准备好好梳理一篇。至于标题,因为是被DDD和COLA唤起的,索性就叫这个吧。思维:面向对象和面向过......
  • DDD面试题:DDD聚合和表的对应关系是什么 ?(来自蚂蚁面试)
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 从零开始写 Docker(十四)---重构:实现容器间 rootfs 隔离
    本文为从零开始写Docker系列第十四篇,实现容器间的rootfs隔离,使得多个容器间互不影响。完整代码见:https://github.com/lixd/mydocker欢迎Star推荐阅读以下文章对docker基本实现有一个大致认识:核心原理:深入理解Docker核心原理:Namespace、Cgroups和Rootfs基于n......
  • 蚂蚁面试:DDD外部接口调用,应该放在哪一层?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 拿去面试!一个基于 DDD 的高性能短链系统
    众所周知,商城、RPC、秒杀、论坛、外卖、点评等项目早早就烂大街了,翻开同学的简历一看10个里面有9个是这些,翻遍全网再很难找到一个既有含金量又能看得懂的项目,针对此,我研发了这样一个可以快速上手又具有较多技术点的短链项目:高性能短链系统EZLink!技术栈如下:DDD架构Reac......
  • 项目重构经验记录
    需求:目前公司内部有一个项目,leader不想给外包做了,想收回来自己做。我看过之后发现继续重构维护成本有点大,遂决定重构。外包技术栈:前端vue2.0,后端C#,数据库sqlserver由于我既不会C#,也不会sqlserver,所以决定写项目。遇到的第一个难题是,因为项目已经上线有了部分用户数据,该部分的数......
  • Godot.NET C#IOC重构(11):攻击与死亡
    目录前言带上伤害HitboxHurtbox实现效果渐变淡出添加受攻击效果Hurtbox完善Enemy状态机结果剩下的都是逻辑完善的部分了,后面的我就跳过了。前言这次来深刻了解一下Godot中的伤害计算带上伤害我们将之前的Hitbox和HurtBox进行了一下简单的修改HitboxusingGodot;usingSyste......
  • Godot.NET C#IOC重构(9-10):三连击,攻击框
    目录前言AnimationPlayer和AnimatedSprite2D将导出属性添加到关键帧里面。状态机构建核心代码完整代码实现效果碰撞框和受攻击框全局类HitBox:攻击框HurtBox:受击框实现效果添加Player攻击总结前言这篇博客来深入讲解一下Godot中的AnimationPlayerAnimationPlayer和AnimatedSpr......
  • 重构-重构方式
    1、重新组织函数1.1 提炼函数ExtractMethod*概述:将一段代码放入一个独立函数中,并让函数名称解释该函数的用途。*动机:厌恶过长的代码。如果函数过长,则很难被理解(用途不清晰,需要大段的注释描述意图),测试也困难;相反,如果一个函数够小、有清晰意图的命名,则被复用的机会更大,函......