速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

捕获 - 嵌入 - 防护:领域驱动设计的指导原则

  • 2017-07-12
  • 本文字数:1016 字

    阅读完需:约 3 分钟

在使用领域驱动模型(DDD)核心理念和实践作为软件设计和开发的指导方针时,可以概括为三个原则:捕获、嵌入、防护。这是 Steven A. Lowe 在今年的 DDD 交流大会演讲时提出的。为了采取积极的行动,我们通过掌握刚好够用的信息来捕获领域模型。我们将模型嵌入到代码和对话中。我们保护领域模型免受其他领域的侵蚀,尤其是技术领域。

在 Thoughtworks 首席顾问 Lowe 看来,DDD 的出现是一种突破,因为它打破了对企业数据模型的错误沉迷,并代之以专注于合作领域的、独立但重叠的模型。他强调,DDD 改变了软件开发的关注点和范围,从技术视角转向了以业务目标指导探索和解决方案。他认为,虽然人们对于 DDD 还存在一些误解,但他指出,那些都是错的:

  • DDD 很难。不,它需要专注和自律,但编程也是如此。
  • DDD 会带来额外负担。除非你认为没有必要了解一个领域。
  • DDD 仅适合复杂的领域。也许复杂的领域最需要,但这种理念肯定是普遍适用的。

捕获的目的是可视化领域的思维模型,让其具备交互性,从而使所有人都达成一致。在 Lowe 推荐的模型创建方法中,其中一种是把所有人都召集到一个房间里,让他们专注于领域活动。这项技术被称为事件风暴——一种由 Alberto Brandolini 创建的集体建模方法。Lowe 发现,这种方法非常强大,可以最大化学习速度,最小化学习负担。

在将领域模型嵌入到代码时,两个重要的部分是命名和组合,前者可以反映领域意图,而后者可以反映领域行为。Lowe 指出,如果你不能给一个东西起个好名字,则可能说明你对你要命名的东西不够了解。由于文档和图表都会过期,所以代码才是唯一可靠的事实来源。通过将领域模型嵌入到代码,就可以保证模型永远正确,而且对于开发人员随时可见。在更高层面上,领域专家也可以读懂代码。

为了保护领域模型免受侵蚀,我们使用边界将子领域隔离开。上下文的边界是其接口,即进进出出的命令和事件。但是,边界的强度也很重要,需要在接口中完成什么验证和转换?一种实用的方法是使用模块从物理上隔离子领域。这样做的好处包括,代码库耦合度更低,更有弹性。Lowe 指出,争取在编码的第一时间避免技术债务比后续消除它更简单。

Lowe 最后强调,捕获 - 嵌入 - 防护是一个迭代过程,会随着每个步骤重复多次,从较小的经过验证的模型逐步构建出一个领域模型。他还指出随时随地使用领域驱动设计的重要性;如果你不是有意对领域建模,那么你就不会无意中为其他东西建模。

查看英文原文: Capture - Embed - Protect, Guidelines for Domain-Driven Design

2017-07-12 19:001724
用户头像

发布了 1008 篇内容, 共 392.6 次阅读, 收获喜欢 344 次。

关注

评论

发布
暂无评论
发现更多内容

如何评估文档管理工具?10款软件对比指南

爱吃小舅的鱼

文档管理工具

4K Video Downloader Plus Pro v1.9.2激活版 专业版在线视频下载器

iMac小白

MT7915 in Action: Driving Seamless Wireless Solutions

wallyslilly

MT7915

After Effects 2020 for Mac(ae 2020 中文直装版)

Mac相关知识分享

AE2020 中文版

文档管理系统怎么选?2024推荐的8款工具

爱吃小舅的鱼

文档管理系统

1024大赛来袭,工业智能体开发等你来挑战!

Openlab_cosmoplat

人工智能

Mac苹果电脑微信多开助手,拥有防撤回和微信多开的功能

你的猪会飞吗

微信多开和防撤回工具 微信多开助手 mac微信多开

如何选择合适的文档管理系统?8个方案对比

爱吃小舅的鱼

文档管理工具

HyperMesh基础教程:概述与有限元分析简介

智造软件

建模 仿真软件 Hypermesh 有限元技术 网格划分

数据结构 - 栈

EquatorCoco

数据结构

Lightroom Classic 2021 for mac(LRC 2021中文直装版)

Mac相关知识分享

初识VPC网络的能力

天翼云开发者社区

云计算 网络安全 VPC

从Naive RAG到Agentic RAG:基于Milvus构建Agentic RAG

Zilliz

AI Milvus Zilliz 向量数据库 rag

律师必备的文档管理工具有哪些?10个推荐

爱吃小舅的鱼

文档管理工具

VMware Fusion Pro 13 for Mac(VM虚拟机软件)

Mac相关知识分享

10分钟使用豆包MarsCode 帮我搭建一套后台管理系统

豆包MarsCode

人工智能 程序员 AI

解析淘宝商品评论API返回值中的评价热度与关注度

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

止步阿里一面。。。

王中阳Go

Go 面试 后端

IDC《中国网络安全软件技术发展路线图,2024》报告身份管理&移动安全推荐厂商

芯盾时代

身份安全 移动安全

数字卫星:「超实时仿真」实现处理器性能5倍提升

DevOps和数字孪生

数字孪生

Typora for Mac(Markdown文本编辑器)中文版

Mac相关知识分享

Mac软件

进程,线程,协程 - 你了解多少?

蛋先生DX

线程 操作系统 进程 协程 上下文

人工智能的发展趋势

天津汇柏科技有限公司

人工智能

IPQ4019 vs. IPQ5018-Comprehensive Comparison of WiFi Solutions

wifi6-yiyi

wifi wifi5

企业如何确保文档安全?9款非云端文档管理工具助力

爱吃小舅的鱼

文档管理工具

学习CST入门教程的好去处:CST基础与中文教程资源

思茂信息

初学者 cst操作

“DataOps+大模型”——数造科技在大模型时代的数据开发创新探索

数造万象

人工智能 AI DataOps 大模型 #SQL

想给MAC电脑换个壁纸?苹果电脑各类高清壁纸资源分享

Rose

6个最佳核心应用仪表盘构建工具

NocoBase

数据挖掘 数据分析 数据可视化 仪表盘

免费办公室文档管理软件有哪些?精选9大软件

爱吃小舅的鱼

文档管理软件

互联网大厂Java高频面试题整理(2024最新含答案)

架构师之道

Java 面试

捕获-嵌入-防护:领域驱动设计的指导原则_语言 & 开发_Jan Stenberg_InfoQ精选文章