2024年7月10日
本文针对B端营销系统设计中的复杂性,从战略设计,战术设计到代码架构,详细介绍了DDD在各个阶段的实践,期望为大家提供一些可供参考和借鉴的思路。 1 背景 通过营销活动实现客户/用户拉新、留存和促活是业界普遍采用的方法。为实现商户增长和留存,美团核心本地商业/商业增值技术部也构建了相应的……
阅读全文
2024年7月10日
领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法,旨在解决复杂业务场景下的设计与开发问题。它的核心理念是将业务领域的知识贯穿于整个软件开发过程中,从而建立起一个能够直接反映业务领域的模型。本文将深入探讨领域驱动设计的原理、方法和最佳实践,并提供……
阅读全文
2024年7月10日
说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 谈谈你的DDD落地经验? 谈谈你对DDD的理解? 如何保证RPC代码不会腐烂,升级能力强? 最近有小伙伴在字节,又遇……
阅读全文
2024年7月10日
尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 谈谈你的DDD落地经验? 谈谈你对DDD的理解? 如何保证RPC代码不会腐烂,升级能力强? 微服务如何拆分? 微服……
阅读全文
2024年7月10日
DDD,即领域驱动设计(Domain-Driven Design),是一种软件设计方法论,它强调以业务领域为中心进行软件开发,将业务专家的知识和系统设计紧密结合起来。DDD 的核心是创建一个丰富的领域模型,通过这个模型来反映业务概念、规则和逻辑,从而提高软件的质量和可维护性。各路人马……
阅读全文
2024年7月10日
背景 正所谓有人的地方就有江湖,有设计的地方也一定会有架构。如果你是一位软件行业的老鸟,你一定会有这样的经历:一个业务的初期,普通的 CRUD 就能满足,业务线也很短,此时系统的一切都看起来很 nice,但随着迭代的不断演化,以及业务逻辑越来越复杂,我们的系统也越来越冗杂,模块彼此关联,甚至没……
阅读全文
2024年7月10日
一、DDD领域驱动模型 一 、认识领域模型 1 DDD是一种软件设计思想和方法论,以领域为核心构建软件设计体系,将业务模型抽象成领域模型进行拆解和封装。 Domain Driven Design(领域驱动设计, DDD),不是一种架构,而是一种架构方法论,是一种拆解业务、划分业务、确定业务边界的方法,是一种领域设计……
阅读全文
2024年7月10日
在设计领域模型时,突出的建模范例是对象,因此我们将概念(即名词)映射到 DDD 构建块(例如实体和值对象)。与这些概念相关的行为被映射到使用动词的方法。 然而,我们希望在模型中定义一些特定于领域的函数,但不能将其附加到现有的实体或值对象中(Evans,2003)。 Evans (2003) 引入了域服务的概念,而……
阅读全文
2024年7月10日
1. 领域驱动设计简介 1.1 什么是领域驱动设计 2004 年埃里克·埃文斯(Eric Evans)发表了《领域驱动设计》(Domain-Driven Design –Tackling Complexity in the Heart of Software)这本书,从此领域驱动设计(Domain Driven Design,简称 DDD)诞生。DDD 核心思想是通过领域驱动设计……
阅读全文
2024年7月9日
NestJS DDD CLI:轻松构建域驱动设计项目的脚手架 安装 要在 NestJS 项目中安装用于为您的域生成文件夹和文件结构的应用程序,您可以使用 @webmogilevtsev/nestjs-ddd-cli 包。您可以使用以下命令安装它: npm install @webmogilevtsev/nestjs-ddd-cli --save-dev 安装包后,您需要将脚本添加到 package.json 文件中才能运行generate:domain 命令。将以下行添加到 "scripts" 部分: "scripts": { ... "generate:domain": "ddd-cli domain --", "generate:command": "ddd-cli command", "generate:query":……
阅读全文