领域驱动设计(DDD)
文章平均质量分 92
本专栏开始系统化的学习DDD的架构及落地实践
存在morning
乐于了解新技术,善于复盘总结,不是很聪明,但能够持续进步。
展开
-
【领域驱动设计 学习目标及大纲】从CRUD到架构设计
2003 年,Eric Evans 写了《领域驱动设计:软件核心复杂性应对之道》一书,正式提出了这种方法。领域驱动设计的英文是 Domain-Driven Design,所以简称 DDD。DDD 是一种开发复杂软件的系统化的方法学和思想,通俗的说就是提供了一套复杂软件开发的标准步骤方法学是研究和制定研究方法的学科,以面向对象方法学如果 Java 代码写得特别溜,可以说掌握了面向对象的编程方法如果熟悉面向对象的设计原则,掌握很多设计模式,那可以说懂面向对象的设计方法;原创 2023-11-26 19:22:11 · 375 阅读 · 0 评论 -
【领域驱动设计 打通DDD最小闭环】一 DDD的开发流程
其实我们日常开发都比较伪DDD,整体实现还是使用 MVC,代码结构类似 Controller、Service、DAO,个人认为这也无可厚非,只是代码的组织形式而已,关键是我们在整体设计时往往缺乏(领域建模-架构设计)这关键两步,很多时候都是就着一个功能点进行(需求分析-数据库 -> 代码实现)。这样没有全局的视角很容易盲人摸象,导致后续摸到一点打个补丁,项目难以维护。DDD的关键不全然是代码架构设计的指导,更是一种应对复杂业务的开发及协作模式,关键人员先通过UL建立有全局共识认知,不确认的地方预留扩展点,再原创 2024-08-23 22:36:08 · 795 阅读 · 0 评论 -
【领域驱动设计 打通DDD最小闭环】二 模型的建立-业务事件风暴
事件风暴不仅能帮助我们尽量把需求补充完全,而且还能以协作的方式保证业务人员和技术人员对需求理解一致。实践过程中有点儿像模型推演,先识别流程,例如入驻流程,然后识别领域事件,例如【门店已联网】,同时明确业务规则,门店一旦有了联网时间不能重置;再识别命令,例如A+开启导致门店联网,同时明确命令执行者是系统,执行时需要查询门店信息。当然可能还有可选领域事件,例如【门店维护人变更】不影响主流程。诸如此类串联完一系列领域事件、命令、查询、执行者之后总结出了【门店】这个领域名词。一个深的体会是过程中的UL语言建立以及结原创 2024-08-24 22:25:02 · 991 阅读 · 0 评论 -
【领域驱动设计 打通DDD最小闭环】三 模型的建立-领域建模
同事件风暴一样领域建模也是在模型建立阶段,但更进一步的,领域建模不仅要对业务进行直观模拟,更要经过提炼,形成浓缩的知识,使模型中的知识不再停留在业务的表面,而是深入到业务的本质,进而加入技术视角选择最合适的建模方案。可以理解为是对事件风暴的技术性加工,使用UML图的一些标记例如:注释、约束、多重性、自关联、多关联、角色以及一些技巧如:多对多关联拆分、抽象化实体、模块化来进行领域建模。一个比较深的体会是对于多对多关联拆分的考虑,例如业务事件阶段的【门店、合作】以领域名词的形式候选为实体,在领域建模阶段明确其多原创 2024-08-25 22:42:02 · 1097 阅读 · 0 评论 -
【架构设计 领域驱动开发 一】三层VSDDD
本篇为架构设计系列的第一篇,希望通过本系列转变自己的软件设计思想。不再只是单纯代码的搬运工,而要有自己的设计想法。本篇文章较长,部分内容学习以下提及的四篇文章,也有部分内容引自这些文章,尊重作者原创,有需要的童鞋也可直接访问 大家一直在谈的领域驱动设计(DDD),我们在互联网业务系统是这么实践的https://mp.weixin.qq.com/s/jMWuMuIvI1cFThC-WQGbHQ原创 2017-12-28 17:17:48 · 4822 阅读 · 0 评论 -
【架构设计 领域驱动开发 二】基本概念概览
按照我一向的惯例,在上手实操之前,前期总会做复杂的评估,大致是这个流程:价值—概念—实践。价值自不必说,已经体现在上一篇里,在复杂软件项目开发中三层架构VSDDD的时候简直就是完败,所以对于逻辑复杂的系统,最好采用领域驱动开发的方式。这个体现了学习这个系列的价值。那么接下来就是概念,也可以理解为理论,首先得知道是什么,在理论学习里我又比较喜欢先整体把握,再局部填充的方式,所以本篇就从整体概念里来概览原创 2018-01-02 18:12:40 · 756 阅读 · 0 评论 -
【微服务与触发器 一】微服务的前世今生
最近使用微服务和触发器的场景较多,想着结合一些理论知识和实践做一些梳理和总结,从最开始的云里雾里,到现在的使用倒也经历了一段时间。先说个自我总结发言性的结论:微服务的主要作用就是解耦合,将服务拆分,易于维护和扩展。触发器的作用就是由操作行为自动触发的数据变化,不需要我们手动去更改。微服务触发器我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们...原创 2018-11-04 17:44:54 · 835 阅读 · 0 评论 -
【架构设计 领域驱动开发 三】战略建模
上一篇学习了基本概念,对DDD有了一个整体的把控,那么,这一篇就是对战略建模进行介绍了,首先什么是战略,战略,是一种从全局考虑谋划实现全局目标的规划,战术只为实现战略的手段之一。实现战略胜利,往往有时候要牺牲部分利益,去获得战略胜利。战略是一种长远的规划,是远大的目标,往往规划战略、制定战略、用于实现战略的目标的时间是比较长的。争一时之长短,用战术就可以达到!如果是“争一世之雌雄”,就需要从全局出发原创 2018-01-02 18:45:51 · 2422 阅读 · 0 评论