AIGC在金融场景是如何落地的? 了解详情
写点什么

论模式在领域驱动设计中的重要性

  • 2017-03-05
  • 本文字数:1041 字

    阅读完需:约 3 分钟

最近在阿姆斯特丹举办的领域驱动设计欧洲大会上, Cyrille Martraire 在其演讲中谈论到模式的重要性时表示,了解领域驱动设计(DDD)之外诸多现存的模式很有必要。

Ward Cunningham 因其第一个搭建了 wiki 网站而为大家熟知,但同时他也是第一批对模式进行描述的人。这第一批模式关注于信息完整性,Martraire 认为这些早期的模式都是分析模式,它们用于描述如何从业务层面来更好地理解问题。例如例外值模式,这个模式让开发人员可以从业务的角度来编写代码,而不用考虑特殊情况,如处理非法值或零值。另一个有意思的模式是诊断查询模式,这个模式认为一个对象应该能够描述其成为当前状态的详细过程,诊断功能可以被用来取代输出日志或查看故障的过程。例如,一个账户对象内有一百欧元,可以被追溯为由一笔美元以及一笔英镑相加而转换来的。

另一个模式的来源是四人组在 90 年代中期所著的《设计模式》。在这些模式中,Martraire 找出了四个对模型化领域中概念及关系特别有用的模式:

  • 组合模式,用于将对象组合成树形结构,可以让客户端以相同的处理方式来处理独立或组合的对象。
  • 解析器模式,用于分析特定语言中的某个语句。
  • 享元模式,使用共享来支持大量细粒度的对象。
  • 策略模式,将算法逻辑从其调用中剥离。

Martraire 在早期的职业生涯中也研究了 Martin Fowler 的《分析模式》一书。从这本书中他学到了一系列在零售银行、医疗、测量领域中使用到的新的模式。他认为通过学习各种模式并透彻了解其原理,就可以将它们应用到新的领域。然而,他强调,如果要获得进一步的理解,了解模式和其中理念发展的过程非常重要,而仅仅学习如今现存的模式是不够的。

如果你还不了解这些模式,那就该思考你是否认真对待了设计过程,或过于关注那些最新技术。一个例子是事件溯源(event sourcing),这个模式常被默认使用,这让一些只需要简单的增删改查模型就可以满足的代码,无谓地变得复杂。他建议花更多时间在领域模型的设计过程上,如果发现设计存在问题,那就多进行改进。Martraire 认为,如果你每次遇到问题,都倾向于创建新项目,你最终只会创造出你自己都无法理解的模型。最后回顾整个设计,你会发现它们都只是增删改查模型。为了训练你的技能,并了解更多复杂模型,可以研究成熟的遗留项目,在这些项目中你能找到深层次的领域模型。

Martraire 目前正在写《活文档(Living Documentation)》一书,其中介绍了如何利用注解来从代码中直接创建文档,用于描述领域驱动设计概念、用到的模式以及其他设计概念。

查看英文原文: The Importance of Patterns in DDD

2017-03-05 18:001870
用户头像

发布了 41 篇内容, 共 12.4 次阅读, 收获喜欢 3 次。

关注

评论

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

透明LED橱窗屏的作用

Dylan

解决方案 LED显示屏 室外显示屏 屏幕

华为云AI实战训练营即将截止,赶紧报名,不要错过!

华为云PaaS服务小智

云计算 华为 华为云 华为云开发者联盟

【有奖征文 】AI编程:华为云CodeArts Snap入门体验

华为云PaaS服务小智

人工智能 AI

接口测试|HttpRunner header处理以及发送post请求

霍格沃兹测试开发学社

HttpRunner

单元测试|Unittest setup前置初始化和teardown后置操作

霍格沃兹测试开发学社

HttpRunner

接口测试|Fiddler介绍以及安装

霍格沃兹测试开发学社

fiddler

如何使用敏捷工具管理敏捷缺陷

顿顿顿

Scrum 敏捷开发 缺陷管理

建设数字工厂:华为云数字工厂平台接入第三方网关设备数据

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

软件测试/测试开发丨学习笔记之Python运算符

测试人

Python 程序员 软件测试 运算符

ABAQUS 在按键手感分析中的应用

思茂信息

软件设计 abaqus abaqus软件 abaqus有限元仿真 有限元仿真技术

接口测试|HttpRunner获取响应数据&extract提取值到变量

霍格沃兹测试开发学社

HttpRunner

接口测试|HttpRunner环境变量与跨文件输出传递变量

霍格沃兹测试开发学社

HttpRunner

Run in PaddleX 2.0,一站式搞定飞桨精选模型开发全流程!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨

性能提升30%!袋鼠云数栈基于 Apache Hudi 的性能优化实战解析

袋鼠云数栈

数据湖 Hudi 企业号 6 月 PK 榜

ZEGO 即构音乐场景降噪技术解析

ZEGO即构

音视频

PAGC2023 金帆奖 | 融云三度荣膺「年度优秀出海产品技术服务」奖

融云 RongCloud

网络 通信 融云 PAGC

TDengine 3.0.5.0 正式发布,系统稳定性进一步提升

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine

敏捷项目管理流程及工具

顿顿顿

敏捷项目 敏捷项目管理 敏捷工具 scrum敏捷工具

客户案例|某知名连锁咖啡品牌点餐小程序排障实录

观测云

可观测性 观测云 云原生可观测 可观测性用观测云

中原银行 OLAP 架构实时化演进

Apache Flink

大数据 flink 实时计算

接口测试|HttpRunner接口关联与常用断言

霍格沃兹测试开发学社

HttpRunner

AI教你实现敏捷游戏自由,再也不用担心陷入瓶颈啦!

禅道项目管理

项目管理 AI ChatGPT

如何用好数智员工实现轻松采购?

用友BIP

数智底座 Pass平台 采购云

WorkPlus AI助理正式上线!为企业打造定制化的AI私有助理

WorkPlus

将 NGINX 部署为 API 网关,第 1 部分

NGINX开源社区

nginx 网关 NGINX Kubernetes Gateway

火山引擎DataTester:企业如何使用A/B实验优化商业化能力

字节跳动数据平台

A/B 测试

2023京东全球科技探索者大会暨京东云峰会来了!

京东科技开发者

人工智能 AI 京东云 AIGC 企业号 6 月 PK 榜

国内外常用的Scrum敏捷看板工具

顿顿顿

Scrum 敏捷开发

英特尔Flex系列GPU支持数字内容创作,提高创意生产力

E科讯

SaaS产品如何用好大模型?腾讯云给出了一个参考答案

ToB行业头条

上新!智能分析云助力【消费品行业】实现数智驱动

用友BIP

数据分析

  • 扫码添加小助手
    领取最新资料包
论模式在领域驱动设计中的重要性_架构_Jan Stenberg_InfoQ精选文章