最近新接了一个业务系统——社区服务系统,为了快速熟悉和梳理老系统的业务逻辑和代码,同时对老系统代码做一些优化,于是打算花上一个月时间不间断地对老系统服务进行重构。同时,考虑到社区业务的复杂性,想起了之前做用户系统时尝试过的领域驱动建模(简称DDD,英文全称为:Domain Driven Design),思量之下,觉得DDD非常时候这种复杂业务逻辑的系统。毫不迟疑,开搞!

  之前在做用户系统时,也尝试使用DDD进行业务建模,但迫于项目工期压力,没有进行深入的学习和建模,最后效果不是很理想,为了避免重蹈覆辙,于是决定先储备好DDD相关知识,再边实践边体会,为此重新学习了Eric Evans的《领域驱动干设计-软件核心复杂性应对之道》和Vaughn Vernon的《实现领域驱动设计》,前者重理论,后者重实现,两者配合相得益彰。

  由于是对旧系统的重构,因此,还学习了Martin Flower的神作《重构-改善即有代码的设计》。

  通过这些书籍的学习和实际编码实践,得到了很多有价值的东西,包括但不限于:加深对DDD的理解,业务建模的重新认识,OOP的重新认识,团队协作和讨论,重构是一门让完美主义者爱不释手的技艺......

  感于此,决定将整个过程中的读书笔记、问题、解决方式、思考过程、心得记录下来,以飨读者,共勉之。另一方面,书中所举例子都比较简单,希望通过社区系统的重构,从中挖掘出一些典型的ddd设计案例,共享出来,也是极好的。

  后面的一段时间,会不间断地整理相关内容放上来,欢迎大家一起讨论。

相关文章链接罗列如下:

通过业务系统的重构实践DDD的更多相关文章

  1. 【DDD】使用领域驱动设计思想实现业务系统

    最近新接了一个业务系统——社区服务系统,为了快速熟悉和梳理老系统的业务逻辑和代码,同时对老系统代码做一些优化,于是打算花上一个月时间不间断地对老系统服务进行重构.同时,考虑到社区业务的复杂性,想起了之 ...

  2. 网易新闻App架构重构实践:DDD正走向流行

    网易新闻App架构重构实践:DDD正走向流行 https://mp.weixin.qq.com/s/FdwrT_xn3CQqpWoRVBttvQ 小智 InfoQ 2020-05-14 作者 | 小智 ...

  3. DDD实战进阶第一波(四):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架三)

    上一篇文章我们讲了经典DDD架构对比传统三层架构的优势,以及经典DDD架构每一层的职责后,本篇文章将介绍基础结构层中支持DDD的轻量级框架的主要代码. 这里需要说明的是,DDD轻量级框架能够体现DDD ...

  4. 为 10000+ 业务系统提供数据可视化能力的 AntV 又进化了

    小蚂蚁说: 2018 年 AntV 品牌日以知新.知心为主题,旨在让产品一直「知新」,与用户一直「知心」.AntV 是蚂蚁金服全新一代数据可视化解决方案,致力于提供一套简单方便.专业可靠.无限可能的数 ...

  5. 使用函数式语言实践DDD

    长期以来我都在实践OOP,进而通过OOP来实现DDD,特别是如何通过面向对象的技巧来建立一个领域模型.OO的一些特性在建立领域模型时显得恰如其分,能否掌握OO的技巧,对创建领域模型有着至关重要的作用. ...

  6. 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化

    背景 字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源.后续为了支持业务发展,做了很多修修补补的工作,系统 ...

  7. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  8. HBase在大搜车金融业务中的应用实践

    摘要: 2017云栖大会HBase专场,大搜车高级数据架构师申玉宝带来HBase在大搜车金融业务中的应用实践.本文主要从数据大屏开始谈起,进而分享了GPS风控实践,包括架构.聚集分析等,最后还分享了流 ...

  9. 如何利用PowerShell完成的Windows服务器系统安全加固实践和基线检测

    0x00 前言简述 最近单位在做等保测评,由本人从事安全运维方面的工作(PS:曾经做过等保等方面的安全服务),所以自然而然的与信安的测评人员一起对接相关业务系统的检查,在做主机系统测评检查时发现了系统 ...

随机推荐

  1. Hadoop - 国内各站点最高温度、气压和风速统计

    版权说明:  本文章版权归本人及博客园共同所有,转载请标明原文出处(http://www.cnblogs.com/mikevictor07/),以下内容为个人理解,仅供参考. 一.简介 该实例统计国内 ...

  2. bash中(),{},(()),[],[[]]的区别

    前言:在bash中遇到各种括号,同时在进行字符数值比较判定时,总是不断出现问题,于是通过参考<advanced bash-scripting guide>,同时在centos 6.7版本上 ...

  3. echarts_部分图表配置简介_横向柱状图

    横向柱状图主要配置x位置x轴类型y轴类型(轴的类型分两种 1.category(类别)2.value(值)),代码简单(里面有注释)效果如下: var myChart = echarts.init(d ...

  4. MySQL连接问题【如何解决MySQL连接超时关闭】

    --MySQL连接问题[如何解决MySQL连接超时关闭] ------------------------------------------------转载 最近做网站有一个站要用到WEB网页采集器 ...

  5. Matlab学习笔记(1)

    在帮助文档中查看学习视频的时候.出现以下对话框,不能查看 解决办法:   在系统环境变量中找到Path.添加“%SystemRoot%\system32;%SystemRoot%;%SystemRoo ...

  6. 在word表格里打勾和打叉

    打勾:在单元格里输入R,再将其字体设置为:Wingdings 2. 打叉:在单元格里输入T,再将其字体设置为:Wingdings 2.

  7. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(五)用户接口层之提取媒体流数据

    当RTSP客户端向RTSP服务端发送完PLAY命令后,RTSP服务端就会另外开启UDP端口(SDP协商定义的端口)发送RTP媒体流数据包.这些数据包之间会间隔一段时间(毫秒级)陆续被发送到RTSP客户 ...

  8. easyUI自带的时间插件日期选择、月份选择、时间选择的使用(转)

    1.日期选择 只要将class设置成easyui-datebox就可以了,当然前提是已经应用了easyui的js <input type="text" class=" ...

  9. (转)CentOS无损调整磁盘分区大小的实现方法

    前几天在QQ群里,有一个朋友问到关于Linux中如何无损调整磁盘分区大小的问题,针对这个问题我在实际使用的过程中也曾探索过,所以比较关注如何无损的调整磁盘分区大小,而不丢失数据!在Windows中,我 ...

  10. Python 文档 涉及词汇

    Python  is an interpreted, interactive, object-oriented programming language that combines remarkabl ...