高品质的音视频能力是怎样的? | Qcon 全球软件开发大会·上海站邀请函 了解详情
写点什么

以传统应用示例明确领域驱动设计的用法

  • 2015-03-26
  • 本文字数:798 字

    阅读完需:约 3 分钟

领域驱动设计(DDD)是一种软件构建方法,它强调多角色之间的协作,包括领域专家、开发人员和为满足业务目标而涉及到的其他角色,Naresh Bhatia 以Bullsfirst 为例解释了DDD 基础概念的引进,这个例子取自财务传统领域中一个具有中等复杂度的系统,他希望这个例子能够易于大家的理解。

Bhatia 参与了这个示例,他是一名软件架构师和和 Archfirst 的创始人,他学习 DDD 基础时提取出了他认为最重要的概念。

一门统一的语言是大家对领域形成共识的关键。在领域专家和开发人员交流时,使用公共术语可以尽可能地降低误解的风险,避免开发人员以编码术语来描述一个领域。

边界上下文是一种将大领域划小的方式,以业务视角把不同的关注点分隔到它们所属的上下文中。Bhatia 说,一个模型应该足够的小,小到可以由一个团队来负责。

领域模型中除了这些最常见的概念(比如实体和价值对象)之外,Bhatia 还总结了一些他觉得很重要的其他概念。

  • 一项与领域概念相关的领域服务,通常一些业务逻辑运行于一组对象之上,因此并非单一实体的自然构成部分。通常领域服务是无状态的。Bhatia 的示例中有个 _MatchingEngine_ 的例子,包含的业务逻辑是匹配订单并执行交易。
  • 领域事件代表领域内会发生的一些重要的事情,只共享这些事件可以解除组件间的耦合。
  • 聚合用来把相关的对象归为一组,一起充当一个单元。一个对象作为根,它是聚合成员唯一对外的用户,外界只能调用它的方法,这样就有效地隐藏了所有其他对象。早些时候 Vaughn Vernon 就已经详细阐述过聚合了。

Bullsfirst 是 Bhatia 用作示例的系统,它是一个包含有 RESTful API(遵循 REST Maturity Level 2 )使证券交易更简单的开源项目,是一个负责订单匹配和执行的交易所,是一个负责创建订单的订单管理系统。采用的技术包括有 Java、.NET、FIX、messaging 和 Web Services。相关代码可点此下载

查看英文原文 Clarifying Domain-Driven Design Using a Trading Application Example

2015-03-26 06:151678

评论

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

我的职场规划

escray

学习 极客时间 朱赟的技术管理课 7月日更

私域流量系统开发,APP源码搭建

获客I3O6O643Z97

私域流量 抖音霸屏

还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!

开源 Rainbond 5.3.2 版本发布,易用的云原生应用管理平台

Barnett

云计算 开源 基础软件 小版本升级

一个Android程序员的腾讯面试心得,进阶学习资料!

欢喜学安卓

android 面试 移动开发 程序猿

Cypress 自动化测试

admin

自动化测试 Cypress 测试 单元测试 UI测试

来自网络资源资产管理的灵魂拷问

鲸品堂

网络 资源 运营商

英特尔加速制程工艺和封装技术创新

新闻科技资讯

外包学生管理系统的架构设计

面向对象的猫

SpringBoot启动加载监听器以及监听应用启动阶段事件

捡对象的cy

springboot

手把手教你实现Android编译期注解

vivo互联网技术

android 注解 sdk

电脑里的视频被误删了可以用EasyRecovery恢复吗?

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

Unity ML-agents 参数设置解明

行者AI

CWE发布2021年最危险的25种软件缺陷

华为云开发者联盟

安全 隐私保护 安全漏洞 cwe 软件缺陷

短视频获客软件系统开发公司

以1敌10不是梦,Spring Boot企业级真实应用案例

博文视点Broadview

经典译文 | 项目经理必读的基本工作法则

LigaAI

项目管理 项目经理

图解红黑树

Ayue、

数据结构

Python OpenCV Canny 边缘检测知识补充

梦想橡皮擦

Python 7月日更

小透明学弟的华为上岸之路

程序员鱼皮

Java c++ Python 大前端 后端

抖音获客系统开发

获客I3O6O643Z97

抖音 头条抖音 抖音霸屏

论文解读丨Zero-Shot场景下的信息结构化提取

华为云开发者联盟

测试 图网络 信息结构化 图卷积网络 zero-shot

秒懂 Java 的三种代理模式

给新手学习MySQL的建议

Simon

MySQL

一例智能网卡(mellanox)的网卡故障分析

OPPO数智技术

后端

科技监管能源运作?智慧能源从光热发电技术开始描述

一只数据鲸鱼

数据可视化 智慧能源 光热发电

带你认识MindSpore量子机器学习库MindQuantum

华为云开发者联盟

mindspore 量子机器 MindQuantum 量子机器学习库

财务或类财务系统数值精度设计

路边水果摊

数字 财务 精度 数值

哔哩哔哩B站视频下载器推荐(简单又好用)

资源君

工具 分享 哔哩哔哩 b站视频下载 教程分享

如何基于磁盘 KV 实现 Bitmap

Kvrocks

redis BitMap storage KV存储引擎

最壕逆天改命:18名Java程序员凭阿里P8笔记,同时斩获一线大厂offer

Java架构师迁哥

以传统应用示例明确领域驱动设计的用法_语言 & 开发_Jan Stenberg_InfoQ精选文章