首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用 DDDDDD 建模,破解 DDD 的魔法?

回到标题上,我们用 DDDDDD 进行建模,只是我们想到的解决方案之一,而不是问题。先再回到上面的问题上, DDD 要解决什么问题 —— 如何将复杂问题控制到人能处理的范围?...而我们想做的是:如何实现 DDD 设计与代码实现的双向绑定?于是乎,DSL 与双向图形化便是我们想到的解。所以,作为解决方案的第一步,那便是对 DDD 进行建模,以进行 DDD 的图形生成。...统一 DDD 的统一语言 尽管,我司(Thoughtworks)会在各类的 DDD 工作坊中强调,统一语言的重要性。...于是乎,这里,我们采用 DDD 社区给出了一个详细的《DDD 概念参考》,作为我们构建 DDD 的统一语言的基础。...与得到一个有用的结果相比,在过程中对于 DDD 的抽象,构建 DDDDDD 模型,显得更有意思。

86120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    DDD开篇

    从知道DDD到现在已经很多年了,看了不少理论知识,在项目中也使用了DDD,碰到些问题,也有些思考,整理一下,上升一下,形成一种适合自身的方法论 在回顾过程中,首先追根溯源,什么是DDD?...为什么要使用DDD?...如何给别人阐述这些最基本的概念与理念,真是个难题 什么是DDD DDD已经发展了很多年,现在的一些书也已经不太关注这个基本概念, 平时闲聊时,开口闭口都是DDD,已经不知道DDD的本体是什么,只是听得耳熟...,说得顺口了,细细回想下,DDD是个什么?...模型是团队在组织领域知识和辨别最感兴趣的原理时一致同意的方式 方法论 由上文可知DDD是一种开发方法,那在DDD之前,是怎么进行软件分析设计的呢?

    65120

    DDD分层

    引起技术实现发生变化的原因与引起领域逻辑发生变化的原因显然不同,这就导致基础设施和领域逻辑问题会以不同速率发生变化 每一层都有各自的职责,显然这也是符合SRP的 如何分层 DDD的标准形态 ?...这样有些另类,所以暂时先把repository全部放在了service层 迷思: 1、基于mybatis的实现,mapper本身是接口,repository实现类放在domain层,不要接口,这样满足DDD...分层规则,但离DIP差了一步 2、在《DDD之熵》中提过 DDD引入repository放在了领域层,一是对应聚合根的概念,二是抽象了数据库访问,,但DDD限界上下文可能不仅限于访问数据库,还可能访问同样属于外部设备的文件...有几种设计思路 ui层完全归属于大前端,不在后端,也就不在ddd中,后端都是从application service开始 controller归于ui controller归于infra,controller...防腐层(ACL)放在下游,将上游的消息转化为下游的领域模型 结合generator-assist-dao模块的问题,是否可以扩大ACL,而不仅限于gateway中,像资源库一样,不必完全遵循DDD只抽象

    2.4K20

    DDD模型初探

    背景 面试官: DDD模型知道吗? 了不起: 知道,DDD叫领域驱动设计。 面试官: 在实际项目中使用过吗? 了不起: 没有使用过 面试官: 如果要求你用DDD来设计一个订单系统, 你会这么设计?...通过以上步骤,我们可以使用DDD来设计和实现订单模块,从而提高软件开发的效率和质量。...总结 总结一下DDD方式的优缺点以及我们什么场景下采用DDD 优点: 更好地理解业务领域:DDD可以帮助我们更好地理解业务领域,将业务逻辑和技术实现分离,从而提高软件开发的效率和质量。...更好地支持变化:DDD可以帮助我们更好地支持变化,将变化隔离在领域模型内部,从而降低变化对系统的影响。 缺点: 学习成本高:DDD需要掌握一定的领域知识和技术实现,因此学习成本较高。...设计复杂度高:DDD需要进行领域建模和设计,因此设计复杂度较高。 实现难度大:DDD需要进行领域驱动的实现,因此实现难度较大。 适用场景: 需要处理复杂业务逻辑的系统。 需要支持变化的系统。

    35220

    面向对象设计的九大基本原则 (GRASP)

    GRASP,职责分配软件模式,General Responsibility Assignment Software Patterns,】,是面向对象设计和职责分配中的九个基本原则,最早是在克雷·拉蒙1997...GRASP中提到的模式和原则包括有控制器(controller)、创建者(creator)、中介(indirection)、信息专家(information expert)、低耦合性(low coupling...因此,GRASP原则是心理层面的工具集,在面向对象软件设计学习上的辅助工具。 模式 在面向对象设计中,设计模式是针对问题以及其解决方案一个有命名的描述方式,可以应用在不同的情境中。...在信息系统逻辑架构的面向对象系统中,若应用程序在应用层/服务层和业务逻辑之间有明确的分隔,GRASP控制器可以视为是应用层或是服务层的一部分。 相关模式或原则:命令模式、外观模式、层、纯虚构。

    96520

    DDD领域驱动设计落地实践系列:初识DDD

    从本文开始笔者将通过一系列的文章阐述自己对于DDD的理解以及如何在项目实战中落地实践DDD。本文作为系列文章的开端,主要和大家聊聊DDD的一些基本概念以及使用背景。 DDD到底是何方神圣?...DDD 上文中通过不同软件设计方式的描述,引出了DDD领域驱动设计模式,那么我们就来看下DDD到底是什么。所谓DDD即Domain Driven Design,字面意思就是领域驱动设计。...想要真正的落地实施DDD必须满足以下两个条件 1、统一认识:DDD不是谁的独角戏,需要整个团队自上而下对于DDD有比较深刻的理解以及认同。...DDD没有大规模应用的原因。...DDD的价值 通过上文的描述,我们大概知道了为什么需要使用DDD来实现软件架构设计。那么DDD会给我们带来怎样的价值呢?

    50730

    DDD有感

    领域驱动设计 Domain-driven design,缩写DDD,是对业务的抽象,把业务模型反形成系统架构设计的一种方式。通过数据对象解决业务问题。...模型对象代码规范 Data Object:DO、数据对象,在DDD的规范里,DO应该仅仅作为数据库物理表格的映射,不能参与到业务逻辑中。...DDD结构一 分层: Application层 Domain层 Infrastructure层 User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令。...DDD Repository代码规范 传统Data Mapper(DAO)属于“固件”,和底层实现(DB、Cache、文件系统等)强绑定,如果直接使用会导致代码“固化”。...应该避免所谓的“通用”Repository模式 DDD的开源应用项目 DDD的开源应用项目

    42950

    DDD之Repository

    之前的DDD文章中也指出过,现在从理论角度对于repository是错误,但一直没有摸索出最佳实践,都是当DAO使用,区别在于repository是领域层,也没有深入思考过 最近再次温习《DDD第二弹》...虽然具体的技术细节有所不同,但问题仍然存在--客户处理的是技术,而不是模型概念 在DDD思想中,领域模型是最重要的,所有的一切手段都是为了让团队专注于模型,屏蔽一切非模型的技术细节,这样也才能做到通用语言...,交流的都是模型 VS DAO 有人总结DDD就是分与合,分是手段、合是目的;对于DDD战略来讲,就是通过分来形成各个上下文界限,在各个上下文中,再去合,很类似归并算法 而聚合就是最小的合,repository...有个很简单的办法区分,业务规则是有if/else的,业务流程没有 作者这样回答,我还是觉得太抽象了,在domain service拿数据太常见,还在看DDD第四讲时,作者有个示例是用domain service...对任何工具的使用都需要多方位权衡 《DDD第二弹》中也提到 业界有两个主流的变更追踪方案:这两个方案只是上面两种方案另取的两外名字而已,意思是一样的 基于Snapshot的方案:当数据从DB里取出来后,

    7.8K22

    DDD之Repository

    之前的DDD文章中也指出过,现在从理论角度对于repository是错误,但一直没有摸索出最佳实践,都是当DAO使用,区别在于repository是领域层,也没有深入思考过 最近再次温习《DDD第二弹》...虽然具体的技术细节有所不同,但问题仍然存在--客户处理的是技术,而不是模型概念 在DDD思想中,领域模型是最重要的,所有的一切手段都是为了让团队专注于模型,屏蔽一切非模型的技术细节,这样也才能做到通用语言...,交流的都是模型 VS DAO 有人总结DDD就是分与合,分是手段、合是目的;对于DDD战略来讲,就是通过分来形成各个上下文界限,在各个上下文中,再去合,很类似归并算法 而聚合就是最小的合,repository...有个很简单的办法区分,业务规则是有if/else的,业务流程没有 作者这样回答,我还是觉得太抽象了,在domain service拿数据太常见,还在看DDD第四讲时,作者有个示例是用domain service...对任何工具的使用都需要多方位权衡 《DDD第二弹》中也提到 业界有两个主流的变更追踪方案:这两个方案只是上面两种方案另取的两外名字而已,意思是一样的 1.基于Snapshot的方案:当数据从DB里取出来后

    1.2K20

    DDD这样落地

    本想搞场chat,可失败了,那就失败吧,也许现在DDD的热度凉了,眼球都到低代码了,对于低代码,我现在只有使用权,还没有发言权,也许明年能写写 DDD意义 每种理论的诞生都是站在前人的基础之上,总得要解决一些痛点...;DDD自己标榜的是解决复杂软件系统,对于复杂怎么理解,至少在DDD本身理论中并没有给出定义,所以是否需要使用DDD并没有规定,事务脚本式编程也有用武之地,DDD也不是放之四海皆准,也就是常说的没有银弹...在这张方法融合论里面,DDD只是一小块,为什么要心中充满DDD呢,不都是进阶路上的垫脚石。...任何事物都是过犹不及,如文章开头所述,没有银弹,千万别因为DDD的火热而一股脑全身心投入DDD,不管场景是否适合,都要DDD;犹如设计模式,后面出现了大量的反模式。...错误的抽象比没有抽象伤害力更大 DDD分层 ?

    1.6K61

    面向对象设计的九大基本原则 (GRASP)

    GRASP,职责分配软件模式,General Responsibility Assignment Software Patterns,】,是面向对象设计和职责分配中的九个基本原则,最早是在克雷·拉蒙1997...GRASP中提到的模式和原则包括有控制器(controller)、创建者(creator)、中介(indirection)、信息专家(information expert)、低耦合性(low coupling...因此,GRASP原则是心理层面的工具集,在面向对象软件设计学习上的辅助工具。 模式 在面向对象设计中,设计模式是针对问题以及其解决方案一个有命名的描述方式,可以应用在不同的情境中。...在信息系统逻辑架构的面向对象系统中,若应用程序在应用层/服务层和业务逻辑之间有明确的分隔,GRASP控制器可以视为是应用层或是服务层的一部分。 相关模式或原则:命令模式、外观模式、层、纯虚构。

    1.6K20

    谈一谈 DDD

    DDD将项目的主要焦点放在核心领域和领域逻辑上。基于一个模型进行复杂的设计,在技术和领域专家之间发起创造性的协作,迭代地切割问题的概念性核心。 DDD是面向对象的设计思想,是面向对象设计的一种升华。...DDD 核心思想是通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模型与代码模型的一致性。 但 DDD 提出后在软件开发领域一直都是“雷声大,雨点小”!...2.4 实施DDD所面临的挑战 为创建通用语言腾出时间和精力 持续地将领域专家引入项目 改变开发者对领域的思考方式 三、如何DDD 3.1 战略设计与战术设计 DDD的实施分战略设计与战术设计。...3.2 DDD领域模型 DDD的研究方式与自然科学的研究方法类似,下面以研究一棵树的过程举例 第一步:确定研究对象,即研究领域,这里是一棵桃树。...桃树的知识体系是我们已经确定要研究的问题域,对应 DDD 的领域。根、茎、叶、花、果实和种子等器官则是细分后的问题子域。这个过程就是 DDD 将领域细分为多个子域的过程。

    48030

    再议DDD分层

    之前整理过《DDD分层》[1] 以及《分层架构》[2] 最近看网友讨论,整理一些有亮点的地方 现在分层架构+整洁架构似乎是个万金油组合了 之前DDD的标准分层结构: ?...眼尖的人可以看出来,两者确实差了不少 线条1:application到infrastructure被反转了 线条2:这条线没有了,在MVC里面这线是常见的,applicaton与domain没分开,但DDD...这图来源于阿里大牛殷浩之手,《阿里DDD四弹》[3]中进行过总结,DTOAssembler放在了application层,有些不太合理 在《分层架构》中thrift的TService,为了不与controller...References [1] 《DDD分层》: http://www.zhuxingsheng.com/blog/ddd-layering.html [2] 《分层架构》: http://www.zhuxingsheng.com.../blog/layered-architecture.html [3] 《阿里DDD四弹》: http://www.zhuxingsheng.com/blog/ali-ddd-four-bombs-to-read.html

    95221
    领券