DDD领域驱动设计

     

代码内聚性

362 27K

在软件开发的动态环境中,代码内聚性的概念是创建高效且可维护的应用程序的基石。尤其是在Java这种以其健壮性和可扩展性而闻名的语言中,理解和应用内聚性原则可以显着提高软件项目的质量。本文深入探讨了 Ja.

使用 Spring Modulith 改进模块化整体应用

363 1 12K

在第一篇文章:使用Spring Boot和领域驱动设计实现模块化整体中,我们了解了如何使用 Spring Boot 和 DDD 构建和实现模块化整体应用程序。本博客中,我们将尝试解决这些限制以创建更易.

REST与RPC = 面向对象和函数编程

278 1 4K

REST 与 RPC 的争论:REST API ! = HTTP 远程过程调用作为开发人员,每当需要 API 时,我们常听到的一句话就是 "哦,我们可以为此开发一个 REST API"。好吧,这没什么.

使用Spring Boot和领域驱动设计实现模块化整体

558 2 18K

用模块化整体架构编写的代码实际上是什么样的?借助 Spring Boot 和 DDD,我们踏上了编写可维护和可演化代码的旅程。当谈论模块化整体代码时,我们的目标是以下几点:应用程序被组织成模块。每个模.

离开Java/C#并不喜欢在Go中看到DDD

161 2K

我注意到,在 Gophers 的小圈子里,他们离开 Java/C# 的动机是渴望一种更简单、更直接的编程方法,以避免与 DDD 和其他强调松散耦合的范式相关的复杂性和不可预测性。他们表示,之所以转用 .

基于状态机实现的DDD聚合根Order对象

135 3K

展示一段示例代码 - Order 类。此类在我们的示例 DDD/CQRS/ES 应用程序中使用。我们正在改进此应用程序,因此这是记录某些意见和更改的好机会。module Ordering  class.

使用双时态 EventSourcing 修复过去并应对未来

124 8K

使用 事件溯源EventSourcing 的感觉非常棒。系统中有发生的事件的历史记录。这使得调试变得更加容易。然而,事件溯源并不能保护我们免受用户犯错误的影响。我们应该如何处理用户输入错误的情况呢? .

DDD中如何为聚合模型减负?

162 2K
业务需求场景: 商品应在提交订单时为客户保留。 仅仅将商品添加到购物车并不能保证产品的可用性。 客户不能将已经缺货的产品加入购物车。 事实上,这并不是什么花哨的要求。我曾经做过一个电子商务项目,就有这.

掌握战略领域驱动设计

367 1 11K
首先了解您的领域:每个公司都有自己的业务领域(有时有几个,有时几十个,有时数百个),在其中运营和赚钱。如果你不能很好地理解这个领域,从长远来看你很可能会失败。在任何项目开始时——当我们的知识非常有限时.

业务规则和验证的区别?

245 1 4K

将业务规则与琐碎的验证相混淆,将不会带来任何好处。当你所拥有的只是琐碎的验证时,不要把事情复杂化。让我们立即从一个非常简单的代码示例开始。这是一个有两个条件的单一方法。 第一个是,如果数量参数小于或等.

Protégé :斯坦福的开源本体编辑器和框架

200

Protégé 是一个本体编辑器,受到强大的用户和开发人员社区的积极支持。它完全支持最新的OWL 2 Web本体语言和RDF规范。Protégé 基于 Java,可扩展,并提供“即插即用环境,使其成为.

什么是自足系统(Self-contained Systems)?

218

自足系统(又称为自包含系统、自我独立系统,英文Self-contained Systems,简称SCS)是一种软件架构方法,SCS 包含自己的 用户界面、特定的 业务逻辑 和单独的 数据存储 。SCS.

利用大语言模型辅助领域建模

176 3K

对于生成式人工智能系统来说,在复杂的现实世界领域中航行是一项艰巨的挑战。不过,现在一种很有前途的方法照亮了前进的道路。通过首先深入理解数据,我们可以将原始输入转化为经过验证的结构,从而优化人工智能推理.

领域模型优先于数据库表

397 2 5K
由 Mark Seemann 发布:在讨论数据库,特别是 ORM 时,有些人会不言而喻地假设关系数据库是存储数据的唯一选择。许多程序员在关系数据设计方面非常熟练,他们在思考新问题时自然会使用这些技能。.

大规模实时机器学习处理架构简介

79 6K

Netflix 是迈向实时数据基础设施的公司的典范 ,这使得 Netflix 能够通过多种方式改善用户体验,例如改进“Trending Now”主屏幕上的推荐、快速测试生产中的更改以及最大限度地减少 .

微前端是模块化后的最终选择

288 1 4K

微前端应作为彻底解耦代码和依赖关系后的最后手段。分布式单体很难管理,并有可能在多个代码库中重新引入相同的问题。在拆分之前,需要进行彻底的重构,以尽量减少孤立部分之间的相互依赖。虽然拆分代码可以带来好处.

如何表达业务规则?用声明方式!

165 2K

下面这个比喻可以说明声明性规范与过程性规范之间的区别: 编写一个计算机程序。 在单独的卡片上注明每条语句。 将这卡片交给操作员执行。 确保程序运行正常,没有错误。 将卡片高高抛起。 按随机顺序捡起地上.

结合大语言模型灵活性和规则引擎可预测性

518 2K

大语言模型LLM系统(如ChatGPT)特点:灵活且惊人,但不可靠。规则引擎(如Drools)特点:稳定,可预测性、可跟踪性。使用langchain4j将大语言模型与业务规则引擎结合起来。训练有素的深.

什么是Context上下文?

614 1 2K
当你没有意识到上下文时,你永远就被置于上下文中!中国谚语:当局者迷、灯下黑、身在庐山不识庐山真面目。G.K.切斯特顿:每一个高级文明都会因为忽视显而易见的事情而衰败。Context Context; .

从贫血领域模型重构为充血领域模型

408 11K

贫血领域模型是一个没有任何行为、只有数据属性的领域模型。缺血(贫血、失血)领域模型在简单的应用程序中工作得很好,但如果您有丰富的业务逻辑,它们就很难维护和发展。业务逻辑和规则的重要部分最终分散在整个应.

什么是领域驱动设计?它是如何工作的?

166

与业务领域无缝集成的软件能为企业带来一系列强大的优势。它可以简化操作,增强以用户为中心的功能,并为利益相关者提供实时洞察力,以便快速做出深思熟虑的决策。DDD 是一种软件开发方法,擅长在领域专家和开发.

以患者为中心的医疗保健领域驱动设计

282 4K

让我们了解传统的电子健康记录 (EHR)。通常,EHR 被视为医疗保健提供商购买、部署并通常与其他系统集成的应用程序或系统。这些 EHR 以组织为中心,旨在满足采购实体的需求,并且重点关注流程和计费。.

构建软件最困难的部分不是编码,而是需求

138 2K

在所有关于人工智能的发展有多么令人惊叹的文章中,有很多人都在担心,我们这些软件开发人员可能很快就会失业,被人工智能所取代。他们想象所有的企业高管和产品研究人员都会绕过大部分或全部的软件开发人员,直接让.

DDD:从聚合到函数组合的改变

250 2

来自OSKAR DUDYCZ的DDD变化旅程。这是我目前所处的进化阶段:我从经典聚合开始,遵循领域驱动设计和典型的面向对象战术模式。因此,将数据和行为封装在一个类中。然后,仅允许通过公共方法进行更改,.

fmodel-rust:使用Rust实现函数式领域建模的开源示例

179 1 3K
当您开发信息系统来自动化业务活动时,您就是在对业务进行建模。您设计的抽象、实现的行为以及构建的 UI 交互都反映了业务 - 它们共同构成了域的模型。这个项目可以用作库包,或作为灵感,或两者兼而有之。它.

Clean整洁架构的文件结构实现

419 1

下面是推特网友mjovanovictech对整洁架构(Clean Architecture)文件夹结构的方法。 专注于功能,而不是类型。  让我们以应用层为例:  应用 |__ FeatureFol.

微服务Saga分布式事务是一种反模式

342 2K

Saga通常被定位为处理分布式事务的更好方法。我认为讨论佐贺的优点和缺点没有意义,因为Saga根本不应该在基于微服务的系统中使用:如果你需要跨几个微服务的分布式事务,很可能你错误地定义和分离了领域。作.

好规则的标准:切实可行

358 3K

规则必须是具体和明确的,否则在遵守、确定和计数方面就无法做到有章可循。好的规则可以避免主观性和不可能。这些规则经过解释(深入研究),可以直接使用或应用。换句话说,好的规则是可以付诸实践的。在本文中,罗.

高内聚低耦合的集中决策设计

603 2

假设,我们正在构建另一个电子商务平台。其关键业务流程之一当然是处理订单。付款成功后,订单模块(域)必须异步调用仓库,准备购买的货物。然而,这些货物可能并不在那里。通常情况下,这不是什么大问题,因为我们.

概念、实体、数据三者之间区别?

515 1 5K
假设一个场景:与客户讨论开始新的工作:客户:我们的用户需要处理三种不同类型的任务:快速任务、复杂任务和监督任务。我们:它们之间有什么区别?客户:快速任务只是登记某人做了某事。真的很简单。我们:嗯。客户.