首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏超级架构师

    【领域驱动设计】Redux 和领域驱动设计

    Redux 的创建者 Dan Abramov 说他不知道什么是领域驱动设计。尽管如此,令人印象深刻的是 Redux 与 DDD 的相似之处。 理解两者,我们可以提供更好的实现;来自不同世界的两种方法相互碰撞并利用相同的设计原则。 领域驱动设计 领域驱动设计是一种软件建模技术,旨在创建强大的微服务架构以及集成多个现有解决方案。 Eric Evans 最初于 2003 年在《领域驱动设计:解决软件核心中的复杂性》一书中提出它。目前,DDD 有更多的书籍、更多的示例,并且已被证明可以有效地扩展和保持大型系统中的高级性能。 Redux Redux 与领域驱动设计有着惊人的关联。虽然它不共享相同的术语,但想法是存在的。Redux 几乎是功能范式中 DDD 策略的实现。

    1.8K30编辑于 2022-05-11
  • 来自专栏程序员升级之路

    领域驱动设计——柔性设计

    一、什么是柔性设计 这个概念来自《领域驱动设计——软件核心复杂性应对之道》一书: 为了使项目能够随着开发工作的进行加速前进,而不会由于它自己的老化停滞不前,设计必须要让人们乐于使用,而且易于修改。 《领域驱动设计——软件核心复杂性应对之道》 说简单点,指的是系统保持良好的扩展性,当有新需求时,旧的系统需要能容易、方便、高效的修改,以达到快速交付。 二、如何进行柔性设计 书中讲了几个模式: 1、INTENTION-REVEALING INTERFACES(意图提示接口) 网上有不同的中文翻译,这里翻译的可能不太准确,所以把原文说出来了。 如果开发的同学为了使用一个类或一个方法必须研究它的实现,那封装就失去了价值,进而设计的概念基础已经被误用了,所以可能被误用。

    1.6K30发布于 2021-05-11
  • 来自专栏程序猿DD

    领域驱动设计

    关于领域驱动设计 这篇文章参考了Eric Evans《领域驱动设计》一书以及Jimmy Nilsson《以C# .NET为例运用领域驱动设计和模式》,二者详细描述了领域驱动设计的核心概念、技术和模式。 值得注意的是,DDD还鼓励将其他领域的概念收入囊中,比如测试驱动开发,设计模式的使用,以及持续重构。 代表模型 领域驱动设计的最主要目的是为了设计和创造出富有表达力的模型。 这些术语不会增加价值,但是它们是深入挖掘领域驱动设计的极好线索。 用户有一个状态 状态可能是一个标志或者字段。也许领域专家对其他系统如电子表格很熟悉,并建议使用同样的实现。 通常,使用行为驱动开发(BDD)故事和场景模板来描述领域示例是很方便的。我们上述场景使用具体实例的版本,用BDD模板进行改写。 isSuccessful(ProjectSuccessPolicy policy) { return policy.isSuccessful(this); } } 组合模式 这是GoF在领域驱动设计中最直接的应用

    1.2K90发布于 2018-03-21
  • 来自专栏ThoughtWorks

    《领域驱动设计

    一、领域驱动设计为何又焕发青春? 直到行业内吹起微服务的热风,人们似乎才重新发现了领域驱动设计的价值,并不是微服务拯救了领域驱动设计,是因为领域驱动设计一直在坚硬的生长,然而看起来,确乎因为微服务,领域驱动设计才又焕发了青春。 学习领域驱动设计可能会给你带来的收获: 领域驱动设计是一套完整而系统的设计方法,它能带给你从战略设计到战术设计的规范过程,使得你的设计思路能够更加清晰,设计过程更加规范。 领域驱动设计与微服务架构天生匹配,无论是在新项目中设计微服务架构,还是将系统从单体架构演进到微服务设计,都可以遵循领域驱动设计的架构原则。 三、学习领域驱动设计的秘诀 没有谁能够做到领域驱动设计的一蹴而就,一门课程也不可能穷尽领域驱动设计的方方面面,从知识的学习到知识的掌握,进而达到能力的提升,需要一个漫长的过程。

    69130发布于 2018-08-03
  • 领域驱动设计

    本文对《领域驱动设计-软件复杂性应对之道》一书进行高度凝练,梳理了领域驱动设计的架构图、基本要素和重要概念。从细节入手,以小见大,你想知道的定义,这里都有。 如果该成本很低,并且在系统的整个生命周期内一直都能维持这样的低成本,那么这个系统的设计就是优良的。如果该系统的每次发布都会提升下一次变更的成本,那么这个设计就是不好的。 领域层处理具体的业务逻辑,返回结果给应用服务层分层是常用的方法,不仅是领域驱动设计,计算机网络也会看到分层思想:网络的七层模型。分层的好处在于:可以集中精力关注每一层的功能职责,更好地分工协作。 三、战略设计战略设计(strategic design):一种针对系统整体的建设和设计决策。 防火墙类比 5.3 responsibility layer 职责分层 responsibility layer:在具有自然层次的模型中,可以围绕主要职责进行概念上的分层,这样可以结合使用”分层“和”职责驱动设计

    39201编辑于 2025-01-18
  • 来自专栏全栈程序员必看

    实现领域驱动设计pdf_领域驱动设计实例

    再回顾一下领域驱动设计的分层中应用层代码的实现。 领域驱动设计,即领域模型驱动程序设计,它的核心是保证系统的实现与实际的业务规则一致,完整实现了领域模型。它包含了两个部分:领域模型、领域模型的编程实现。 接下来我们要介绍如何实现模型驱动程序设计,即我们如何通过代码来实现领域模型对应的业务逻辑。领域模型的实现代码在领域层,它完整实现了领域模型的内部结构和模型之间的关系。 在《领域驱动设计》里面有一个示例,展示了转账服务的实现,转账动作实现的是从一个账户到另一个账户的资金流转,因此将转账设计到领域服务TransferService里面。 0) { TableException.throwTableException(DESIGNER_ORDER_TABLE, TableOperation.UPDATE); } } } 4 结论 领域驱动设计的模式如下所示

    2K20编辑于 2022-09-20
  • 来自专栏云计算行业

    用领域驱动设计驱动系统重构

    如果系统重构是不可避免的,应该用什么样的设计思想和方法来引导我们进行系统重构。 《用领域驱动设计驱动系统重构》通过一个交通出行互联网应用的重构案例,展示随着功能不断迭代开发,系统开始腐坏变味的时候,如何利用领域驱动设计的方法驱动系统进行重构。

    70830编辑于 2023-05-29
  • 来自专栏领域驱动设计DDD实战进阶

    领域驱动设计之关联设计

    在找到实体与值对象后,我们就需要进行对象之间的关联设计。 1.关联尽量少,不要形成复杂的关系网。

    1.4K40发布于 2018-05-11
  • 来自专栏ThoughtWorks

    再谈领域驱动设计

    本文从需求分析到API设计,试图描述领域驱动设计的过程及思想。同时也能看的出领域驱动设计并不是孤立存在的,它为解决开发团队和业务人员之间沟通而生,进而驱动微服务的划分以及API的设计。 作为一个领域驱动设计的实践者,我切实感受到了领域驱动为软件开发带来的好处,同时在实践领域驱动的过程中也感受到了困难,这种困难体现在工程实践的方方面面,例如什么是领域驱动的最佳设计? 如何把书本上的设计灵活的应用在自己的项目上?如何跟团队成员就设计达成一致? 本文尝试从领域驱动设计的目的出发,试图通过简单的描述来说明领域驱动设计的思想。 ---- 领域模型的持久化 在领域建模以及之前的步骤中,我们都没有提及数据库,因为领域驱动设计的核心是用代码建立一个共享模型,而数据库设计根本就不是领域驱动设计关心的内容。 同时也能看的出领域驱动设计并不是孤立存在的,它为解决开发团队和业务人员之间沟通而生,进而驱动微服务划分以及API的设计,领域驱动设计并不是遥不可及的方法论,每一个专业术语和思想都是为了解决基本的问题而定义

    77810发布于 2020-11-25
  • 来自专栏IT技术订阅

    领域驱动设计-下

    DDD架构 传统分层架构 分层架构设计就是为了帮助我们达到高内聚、低耦合复用性设计和扩展性设计。 领域服务: 基础层:是一个交互层次,为其它各层提供通用的技术基础服务,包含三方工具、驱动、MQ、API网关、文件、缓存、DB、基础服务等;最常用的还是提供DB持久化。 DDD架构和MVC架构 MVC架构,目前典型实现包括SpringMVC,Spring Boot,固化业务,是一种结构性设计模式,也是一种面向数据的设计。 细化子域 领域就是问题域,有边界,领域中有很多问题; 任何一个系统要解决的那个大问题都对应一个领域; 通过建立领域模型来解决领域中的核心问题,模型驱动的思想; 领域建模的目标针对我们在领域中所关心的问题 ,即只针对核心关注点,而不是整个领域中的所有问题; 领域模型在设计时应考虑一定的抽象性、通用性,以及复用价值; 通过领域模型驱动代码的实现,确保代码让领域模型落地,代码最终能解决问题; 领域模型是系统的核心

    1K30编辑于 2022-06-23
  • 来自专栏斑斓

    变化驱动:正交设计

    破解这类难题的方法是:既然我们知道高内聚,低耦合的设计是为了软件更容易应对变化的,那么我们为何不反过来,让实际发生的需求变化来驱动我们识别变化,管理变化,从而让我们的系统达到恰如其分的内聚度和耦合度? 策略二:分离不同的变化方向 除了重复代码外,另外一个驱动系统朝向高内聚方向演进的信号是:我们经常需要因为同一类原因,修改某个模块。而这个模块的其它部分却保持不变。 它们以变化驱动,让系统逐步向更好的正交性演进的策略,因此也被称做正交策略或正交原则。 我们已经在多个系统的设计和开发中,以这四个原则来驱动我们的软件设计,不仅让我们的系统在保持简单的同时,具备所有必要的灵活性。也让设计和开发活动变得高度有章可循,让团队生产率得以大幅提升。 最后,推荐刘光聪的文章《实战正交设计》。这篇文章通过一个例子,来展示了正交策略是如何驱动出更加正交的设计的。 而正交设计与SOLID的关系,可参阅《正交设计,OO与SOLID》。

    1.3K70发布于 2018-03-07
  • 来自专栏斑斓

    领域驱动设计揭秘

    我在2020年领域驱动设计中国峰会的分享,主题为:领域驱动设计揭秘。分为四个部分: 领域驱动设计 vs. 数据驱动设计 领域驱动设计的黑铁时代和黄金时代 单体架构是邪恶的吗 领域驱动设计的不足与领域驱动设计统一过程 ¶ 领域驱动设计 vs. 数据驱动设计 通过比较领域驱动设计和数据驱动设计,探讨为何基于数据库进行设计容易催生出贫血模型与事务脚本,指出领域驱动设计与数据驱动设计的不同之处在于限界上下文和聚合。 ¶ 领域驱动设计的不足与领域驱动设计统一过程 我承认领域驱动设计无论伦比的设计魅力,尊敬Eric Evans卓越的洞见与设计前瞻能力,但也不讳言领域驱动设计本身存在的不足。 这几年,领域驱动设计随着微服务的流行变成了显学,但领域驱动设计不是“银弹”,既然如此,领域驱动设计统一过程(DDD-UP)就更不是“银弹”了,它不过是对领域驱动设计的一种补充和完善罢了。

    48220编辑于 2023-03-23
  • 来自专栏IT专栏

    领域驱动设计之我见

    它为我们提供了设计软件的一个全新视角,同时也给开发者留下了一大难题:如何将领域驱动设计付诸实践? Vaughn Vernon的《实现领域驱动设计》则分别从战略和战术层面详尽地讨论了如何实践DDD,其中包含了大量的最佳实践、设计准则和对一些问题的折中性讨论。 分层架构VS六边形架构 Evans在它的《领域驱动设计:软件核心复杂性应对之道》书中推荐采用分层架构去实现领域驱动设计: 其实这种分层架构我们早已驾轻就熟,MVC模式就是我们所熟知的一种分层架构, 推荐书目: 《领域驱动设计 软件核心复杂性应对之道》 《实现领域驱动设计》 《领域驱动设计模式、原理与实践》 《分析模式——可复用的对象模型》 参考: 领域驱动设计,盒马技术团队这么做 领域驱动架构篇 菱形对称架构 领域驱动设计DDD和CQRS落地

    69520发布于 2021-11-22
  • 来自专栏IT技术订阅

    领域驱动设计-上

    DDD基础 引言 <<领域驱动设计-软件核心复杂性应对之道>>:全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。 为什么是领域模型的设计而不是架构设计或其他的什么设计呢?因为DDD是一种基于模型驱动开发的软件开发思想,强调领域模型是整个系统的核心,领域模型也是整个系统的核心价值所在。 领域驱动设计和微服务的关系:微服务架构怎么拆、拆多小?领域驱动设计定义领域模型,从而划分领域边界,然后再根据我们的领域边界从业务的角度去进行微服务边界定义。 领域驱动用什么方式进行边界的定义? 然后圈选功能相近的部分,就形成了领域,领域又根据职能不同划分为:核心域、支撑域、通用域, 驱动 领域驱动领域模型设计,领域模型驱动代码实现。这个就和我们传统的数据库驱动开发的思路形成对比了。 设计 DDD中的设计主要指领域模型的设计,DDD是一种基于模型驱动开发的软件开发思想,强调领域模型是整个系统的核心,领域模型也是整个系统的核心价值所在。

    83810编辑于 2022-06-23
  • 来自专栏斑斓

    领域驱动设计概览

    领域驱动设计的开放性 领域驱动设计是一种方法论(Methodology)。根据维基百科的定义,方法论是一套运用到某个研究领域的系统与理论分析方法。 领域驱动设计的提出,是设计观念的转变,蕴含了全新的设计思想、设计原则与设计过程。 由于领域驱动设计是一套方法论,它建立了以领域为核心驱动力的设计体系,因而具有一定的开放性。 领域驱动设计过程 领域驱动设计当然不是架构方法,也并非设计模式。准确地说,它其实是“一种思维方式,也是一组优先任务,它旨在加速那些必须处理复杂领域的软件项目的开发”。 领域驱动设计强调领域模型的重要性,并通过模型驱动设计来保障领域模型与程序设计的一致。 因此在战略设计阶段,微服务扩展了领域驱动设计的内容,反过来领域驱动设计又能够保证良好的微服务设计

    2.2K30发布于 2018-10-24
  • 来自专栏.NETCORE

    DDD邻域驱动设计

    1、DDD的起源 2004年邻域驱动设计之父Eric Evan发表 产生原因: 降低沟通成本2、邻域思想初步 DDD:是一种程序设计方法,不关乎技术,具体代码实现依旧是OOP 一个BLL就是一个领域 领域谁来划分:需求分析师 2、 Driven 驱动 拆分邻域 设计领域——清晰职责 职责划分,规则——定好规范 3、 Design 设计 项目按照领域来设计,每个领域都按照设计实现的,那么完成每个领域之后 总结: 1、邻域驱动设计是一种方法论

    45100编辑于 2022-11-10
  • 来自专栏周拱壹卒

    领域驱动设计实战

    架构风格选择 采用领域驱动设计方法进行问题空间分析及解空间设计。划分顾客、商家、骑手、订单、通知五个限界上下文,每个上下文成为一个微服务。服务内部采用分层架构。服务之间以开放主机服务及事件驱动架构。 ,如果有,则将该过程数据识别为领域概念 归纳抽象 针对有定语修饰的领域概念进行归纳和抽象 确定关系 确定领域概念之间的关系 领域分析模型精炼 领域分析模型与限界上下文 领域分析模型 区分实体和值对象,设计聚合 限界上下文及上下文映射图 bounded-context 领域事件及 Topic 事件风暴方法分析命令、领域事件及聚合: domain-event events 事件驱动机制及事务管理机制 本地事件表保存事件以保证事务一致性 定时轮询事件表中未发送事件,将其转换为消息发送至消息队列 消息生产者通过事件表的乐观锁保证消息的成功发送,消费者保证消息处理的幂等性 工程结构设计 参考结构 mapping package 以上两张图片引自 《解构领域驱动设计》 实际结构 服务名 order:订单 consumer:顾客 merchant:商家 courier:骑手 notification:通知 包划分 com.neusoft.hackathon.order.north

    27710编辑于 2024-09-25
  • 来自专栏JusterZhu

    浅析领域驱动设计

    1.概要 DDD(Domain-driven design,模型驱动设计)是一种软件设计的指导思想,而非固定的一套公式化开发模板(这样就会导致网络上出现各种基于自己或业务上的理解而产出的DDD落地的实现 任何技术或者设计都需要整体的评估,而不是一味地去迎合。 接下来让我们看看什么是领域驱动设计。 1.1需求分析 需求分析的方式有很多,例如:用例法,四色建模法。 技术是服务于业务的脱离业务谈技术或者架构、设计都是空谈。 在DDD中需要弱化Services,大家不要把领域模型花了那么大心思去分析的业务,又大部分通过Services去实现成为了一个数据驱动的开发方式上。 所以在做领域设计的时候大家一定要想清楚当时定义的意思和作用。

    93310编辑于 2023-01-10
  • 来自专栏微观技术

    聊聊领域驱动设计

    前言 DDD全写 domain driver design ,也称为领域驱动设计。大型复杂业务系统架构一般都会用到,在提高系统扩展性有很大帮助。 听着是不是很牛掰,感觉又有点虚,具体要怎么操作? 设计:主要指领域模型的设计,领域模型是整个系统的核心。 每一个领域,都有一个对应的领域模型,领域模型能够很好的帮我们解决复杂的业务问题 驱动:是以领域为边界,分析领域中的核心问题(核心关注点),然后设计对应的领域模型,再通过领域模型驱动代码实现。 划重点: •通过设计领域模型来解决领域中的核心问题,模型驱动的思想。而不是面向过程的思想,走一步看一步。 5、技术要素 框架选型、架构设计、容量规划、数据库设计、分库分表方案、缓存设计、高并发解决方案、监控报警等 架构设计 微服务 • 强模块化边界。

    92710发布于 2020-08-20
  • 来自专栏超级架构师

    「领域驱动设计」领域驱动设计中的上下文映射

    设计术语中,这个共享部分的通用语言对于所有相关的团队都是通用的。在代码术语中,您可能有一个共享库或服务。

    1.6K30发布于 2019-11-27
领券