随笔分类 -  领域驱动设计

摘要:上一节我们讲解了常用的事务,也提及了Saga,这是在分布式环境下被经常使用的一种处理复杂业务和分布式事务的设计模式。本章我们的主要目标是编写一个简单版本的Saga处理器,不同于Seata框架中那种可独立部署的事务服务,我们所编写的Saga和业务集成在一起也不支持通过手画流程的方式实现,因为我们的目标 阅读全文
posted @ 2022-05-23 16:00 SKevin 阅读(731) 评论(0) 推荐(0) 编辑
摘要:有关事务的内容,在前面我们已经不只谈过一次,没办法,这是一个绕不开的话题。你敢说你在开发中不用到它?最起码聚合进行序列化的时候得启动一个本地事务吧。当然了,如果你用的是NoSQL,则另当别论,咱也就别抬那个杠了。你必须承认的事实就是无论现在的NoSQL数据库怎么发展,关系型的数据库仍然是业务系统中的 阅读全文
posted @ 2022-05-13 13:48 SKevin 阅读(2017) 评论(12) 推荐(8) 编辑
摘要:任何事物都在变化着包括领域驱动设计这门学问。Evans在首次提到DDD概念后,后来出现了陆续又出现了很多的专家与学者对其理论进行了扩充比如:“领域事件”、“事件源”、“命令查询责任分离”等。也正是由于这些补充,不仅让DDD的适用范围变得更大也让后来出现的微服务架构系统受益良多,为系统落地提供了非常优 阅读全文
posted @ 2022-05-06 19:56 SKevin 阅读(1445) 评论(6) 推荐(2) 编辑
摘要:开讲资源库,这东西简单来说就是用于持久化或查询聚合的。注意!您需要与DAO分别:DAO操作的对象是数据实体;而资源仓库的目标是聚合(不存在通过资源库操作值对象的情况,值对象必须依赖于某个实体)。你完全可以把资源库想像成为一个盒子,想要存储聚合的时候直接放进去即可;想要修改只需要取出后再放进去,就能把 阅读全文
posted @ 2022-04-25 10:31 SKevin 阅读(1603) 评论(4) 推荐(3) 编辑
摘要:在讲解实体的章节中我们曾经介绍说过如何有效的创建实体,主要包括两种方式:工厂和构造函数。本章我们工厂进行一下详解,这种东西能有效的简化实体使用的难度,毕竟你无法通过Spring这种容器来管理领域对象。实际的开发过程中,工厂的使用要比书中的讲解会复杂一点,所以在本章我会对实践中遇到的一些问题以及使用什 阅读全文
posted @ 2022-04-18 09:12 SKevin 阅读(1049) 评论(9) 推荐(6) 编辑
摘要:聚合的自白 大家好,我是聚合,在你们的期盼之下我终于出来了。其实早就想和大家见一面,不过作者每天总想着水流量,到现在才让我出来。他把实体和值对象这两个我家庭内的成员先介绍让我感觉非常的不公平。没有国哪有家?没有家庭,生活也不会温暖。好多的工程师眼里只想着实体他们,让我难受的想要哭泣。明明是由于我的存 阅读全文
posted @ 2022-04-11 09:07 SKevin 阅读(712) 评论(1) 推荐(5) 编辑
摘要:实体对象和值对象都写完了,本想开始写资源仓库顺便把工作单元再搞搞。不过有一点麻烦的是我不太想把工作单元作为单独的一章来写,一是这东西网上相关的内容太多;二是有的时候使用Spirng的事务就解决了,没觉得有多大作用。不过先不纠结这些,还是按本章的主题写领域服务吧,这好讲,谁不喜欢简单的东西。 一、为啥 阅读全文
posted @ 2022-04-07 17:58 SKevin 阅读(1131) 评论(2) 推荐(2) 编辑
摘要:值对象这个东西在DDD里算是比较抽象的,好多人学了半天也学不明白。我这种聪明人也费了好大劲,总算苦心人天不负,现在也能用个有模有样了。战术模式中不论是领域服务、对象工厂还是资源库,基本上您能听懂是什么意思,在BO层中所承担的角色也比较明确,唯独这个值对象有点坑爹。遥想当年我在使用C#的时候,里面有一 阅读全文
posted @ 2022-04-02 17:46 SKevin 阅读(1239) 评论(7) 推荐(2) 编辑
摘要:内验是针对领域模型自身的验证,其验证规则也是由领域模型自已来完成,只是触发的时机可能在工厂中也可能在构造函数中。与内验对应的当然就是外验了,这是用于对用户的输入和业务流程的前提或得更专业一点叫“前置条件”的检验。如果细化一点,可以将外验分成两个情况:用户输入和业务流程的前置条件。情况不同验证的方式也 阅读全文
posted @ 2022-03-31 08:30 SKevin 阅读(1897) 评论(7) 推荐(6) 编辑
摘要:验证在我们现实的生活中非常常见,比如您找工作得先整个面试验证你的能力是否靠谱;找对象得先验证下对方的颜值和升值空间。有些工程师写代码从不验证,我觉得是有三个原因,一是意识不够,过于相信前端或外部服务;二是个人缺少主动思考的能力;三是团队负责人的问题,您都当了领导了为什么不制定一些基本开发规则给团队树 阅读全文
posted @ 2022-03-29 08:19 SKevin 阅读(782) 评论(1) 推荐(2) 编辑
摘要:上一节中讲了实体的一些概念,作为DDD中最为复杂的组件,想用好了还需要在实践中慢慢去摸索,都是摸爬滚打过来的。本章着重演示一些实体相关的代码,通过建立一个基类和通用方法,能让您在开发过程中少写一些重复的代码同时也减少在使用第三方开源框架时的学习成本。此外,是从0写代码,不需要付出太多的精力便可以加深 阅读全文
posted @ 2022-03-23 10:12 SKevin 阅读(987) 评论(2) 推荐(2) 编辑
摘要:现在开始正式的进入战术部分,我看前面发的一些文章,只要有代码的阅读量就高,没代码的就差太多了,难道是因为平台只要看到代码才会加强推荐吗?真要是这样那我是真醉了,其实学习DDD光看代码还真不行,需要很多理论支持的。如果您是新的读者我建议先把前面的内容都翻看一下,至少得有一些理论依据作支撑后面学习起来才 阅读全文
posted @ 2022-03-21 08:50 SKevin 阅读(1137) 评论(3) 推荐(1) 编辑
摘要:前面细讲了基于CQS的4层架构,其中的领域模型层也就是六边型架构中的内核在整个开发流程中工作占比最大,也是需要工程师最需要关注地方。那么话说回来了,里面到底包含了什么东西需要投入如此高的关注度。答案还用说?必然是领域模型啊,比如实体、值类型、业务服务等,您别忘了咱们讲的是领域驱动设计。具体可参看如下 阅读全文
posted @ 2022-03-17 09:13 SKevin 阅读(2225) 评论(11) 推荐(5) 编辑
摘要:写了好几章的东西,再回头读的时候发现有些内容写的不理想,没有表达出自己所想要表达的意思。这次写一个补遗,把我认为需要重新解释和着重说明的内容再唠一唠。反正我多说两句,您就可以多理解一些。按此等形式,我感觉下次应该找个小弟当副编辑,专门用于挑错。废话不多说,走起…… 一、为啥我讲的和书上的内容有些不一 阅读全文
posted @ 2022-03-15 09:11 SKevin 阅读(739) 评论(0) 推荐(2) 编辑
摘要:在做了两章铺垫后本章再续写第九章。我们之前介绍过了好几种架构模式,那么本章只挑一种往死了整,这个架构其实就是在DDD书中所介绍的经典四层的变更版。这里面需要注意一点,四层架构是洋葱架构的一部分,尽管洋葱型已经是微服务架构系统中一种事实上的标准,但我们不会对各类适配器做重点介绍,那些东西一般都是开源的 阅读全文
posted @ 2022-03-14 10:55 SKevin 阅读(948) 评论(0) 推荐(2) 编辑
摘要:上一章讲解了软件设计中主要用到的三个设计模型,本节讲解三个服务。等咱们这次都讲完了再最后进行一次归纳,即:系统开发流程中的三模型、软件设计中的三模型和三个服务,我习惯管这个叫3*3*3。看完了您就会知道我为什么常说软件设计这活是朴素的,没那么多弯弯绕,只是因为我们在学习过程中没有做思考和归纳。设计模 阅读全文
posted @ 2022-03-09 08:29 SKevin 阅读(2738) 评论(13) 推荐(3) 编辑
摘要:今儿写这个题目胆子有点大,不过还是得冒险整一篇(我怕您看完了骂我),一是出于经验分享,另外则是为了后面我们讲案例的时候做好铺垫。好的代码需要注意的事项其实挺多的,您真让我一骨脑儿都列出来可能也差点意思,所以遵照我们常态化歪楼的习惯,我是想到哪写到哪儿。 我没事儿的时候就喜欢看别人写的文章,也喜欢看书 阅读全文
posted @ 2022-03-07 08:44 SKevin 阅读(1047) 评论(3) 推荐(4) 编辑
摘要:各位看官司好,领域驱动设计转眼就写到了第十章,内容虽不多,但的确下了一番的心血。希望您在此系列中已经得到了收获,哪怕是一丁点,也是DDD这个圈子的星星之火。其实早就想将自身所学进行一番总结,形成为一种体系化的东西。奈何个人太懒,工作之余就想在床上横着,或刷手机或读书。不过既然下定了决心且已经有了一个 阅读全文
posted @ 2022-03-04 09:53 SKevin 阅读(926) 评论(1) 推荐(4) 编辑
摘要:本节开始进入DDD的战术阶段,首先要讲解的必然是DDD中的架构,毕竟程序员就喜欢这个……不过这里的架构不同于我们常说的微服务架构、单体架构、无服务架构或服务网格。不严谨来讲,上述4种为涉及到系统结构、部署方式、服务器架构等更为全面的、包含软、硬件等内容的宏观系统架构(这个不在我们的主要范围内,主要是 阅读全文
posted @ 2022-03-03 14:19 SKevin 阅读(1422) 评论(3) 推荐(6) 编辑
摘要:我们在前面花了大手笔聊子域与限界上下文,不知道作为读者的您的感受是什么。当然了,我可不是郭德纲自己给自己叫好。您应该也发现了一个规律,此两节的内容其实都是在讲“分”:子域从业务上划小,BC从物理上进行划小。虽然说BC属于分析模型,但那东西只要一确定您可就得按这个方案进行开发了,所以说其确定了物理上的 阅读全文
posted @ 2022-03-01 08:40 SKevin 阅读(1324) 评论(3) 推荐(6) 编辑