架构师篇-21、工作坊实战DDD分解业务

news2024/11/14 17:51:55

课程内容:

  • 采用工作坊的教学模式
  • 共创主题一:DDD业务分析步骤
  • 共创主题二:DDD领域模型输出
  • 共创主题三:业务架构蓝图输出

收益:

  • 如何采用DDD进行业务分解?【循序渐进不断实践】
  • 共创输出项目业务架构图及业务分析

知识复习

事件风暴

在这里插入图片描述

事件风暴会议

在这里插入图片描述

在线订餐系统的事件风暴【样例】

在这里插入图片描述

问题域、子域与限界上下文【样例】

在这里插入图片描述
在这里插入图片描述

在线订餐系统的领域事件【样例】

在这里插入图片描述

微服务拆分【样例】

在这里插入图片描述

领域模型【样例】

在这里插入图片描述

领域分析与领域模型【样例】

在这里插入图片描述

原文分析法【样例】

在这里插入图片描述

分析结果【样例】

在这里插入图片描述

原文分析法【样例】

在这里插入图片描述

四色建模【样例】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

限界上下文的设计原则

在这里插入图片描述

研发框架之分层结构 – 实体

代码案例摘自:
https://github.com/dayatang/dddlib
https://github.com/dayatang/hrm-demo
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

研发框架之分层结构 – 值对象

在这里插入图片描述
在这里插入图片描述

研发框架之分层结构 – 仓储

在这里插入图片描述
在这里插入图片描述
具体实现则由EntityRepositoryHibernate Implements EntityRepository

研发框架之分层结构 – 工厂

在这里插入图片描述
Spring的工厂实现
在这里插入图片描述
谷歌的guice的工厂实现
在这里插入图片描述
当并发量高了之后,修改只是技术层面的东西,业务领域是不会发生变化的。

研发框架之分层结构 – 领域事件

在这里插入图片描述
在这里插入图片描述

研发框架之分层结构 – 实体抽象与继承

在这里插入图片描述

研发框架之分层结构 – 业务实体

在这里插入图片描述

研发框架之分层结构 – 实例与值对象、属性、行为定义

在这里插入图片描述
熟悉了注解后,后续的组织形式就会比较清晰。

研发框架之分层结构 – 通用查询实现

CQRS
在这里插入图片描述

上节回顾

关键点需要聚焦
在这里插入图片描述

共创

  • 共创主题一:DDD业务分析步骤

  • 共创主题二:DDD领域模型输出

  • 共创主题三:业务架构蓝图输出

  • 确定业务架构设计主要内容

    • 组织结构 业务功能 商业模式 业务流程 业务数据
  • 采用DDD分解业务

    • 事件风暴【产品愿景分析、场景分析、领域建模】
    • 限界上下文【定义领域边界的利器】
    • 领域&子域【有效分解问题域】
    • 领域模型【实体和值对象】

共创主题 - DDD分解业务 - 业务架构设计

  • 先定义事件风暴的一些组件在这里插入图片描述
  • 列出业务功能
    • 个人思考:下单事件、履约事件、配送事件、退款事件…
    • 课上讨论:在这里插入图片描述
      • 用户下单(事件)、下单(命令)、已下单(领域事件)、订单+菜品明细(对象,聚合关系)
      • 通过三个视角梳理业务:商家体系管理【商品管理、商家入驻…】、用户体系管理【】、平台体系管理【】
        • 商家:商家注册-》商家审核-》…在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2074893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

xtrabackup 用户权限

xtrabackup 用户权限 1.1、建用户及授权 The database user needs the following privileges on the tables/databases to be backed up: RELOAD and LOCK TABLES (unless the --no-lock option is specified) in order to FLUSH TABLES WITH READ LOCK and FLUSH ENGINE LO…

【C++】vector(上)

个人主页~ vector类 一、vector的介绍和使用1、vector的介绍2、vector的使用(1)vector的定义(2)vector iterator的使用(3)vector 空间增长(4)vector的增删查改(5&#xf…

linux qt编写串口软件

1.界面布局 界面的简单设置,用到了 1.输入显示栏 2.数据发送栏 3.选择栏 4.16进制显示栏 和若干pushbottom label,布局就是横竖横竖这样布局下去 对界面进行基础的对齐美化 1.右侧布局的对齐 添加设置代码 右上选项已对齐 有个校验位一开始忘记添加…

PostgreSQL:后端开发者的瑞士军刀

PostgreSQL:后端开发者的瑞士军刀 在后端开发的世界中,PostgreSQL不仅是一个数据库,它更像是一个多功能的瑞士军刀,为开发者提供了强大的工具来构建和维护复杂的数据系统。作为一名资深后端开发者,我想分享一些关于Po…

Nginx四层负载均衡

1、Nginx四层负载均衡 1.1 负载均衡概述 负载均衡是一种分布式计算技术,用于将网络流量和用户请求分散到多台服务器上,以此来提高网络服务的可用性和可靠性。它通过优化资源使用、最大化吞吐量以及最小化响应时间,增强了网络、服务器和数据…

资源受限的智能陷阱:集成TinyML的果蝇监控框架

这篇论文的标题是《Resource-Constrained Intelligent Trap: Fruit Flies Surveillance Framework with TinyML Integration》,作者是Quan Minh Nguyen、Minh Nhat Lai、Vu Thanh Le和Hien Bich Vo。论文介绍了一种资源受限的智能陷阱系统,用于监测和控制…

开放式耳机什么牌子好用?五款备受赞誉的单品推荐

开放式耳机设计不堵耳道,让用户听歌或打电话时还能听到周围的声音,这对喜欢户外运动的人很好。这种耳机戴着稳,舒服,也更安全。根据我自己的试戴体验,我挑出了几款不错的开放式耳机。接下来,让我们一起探讨…

【办公类-54-01】20240826每周安排文件夹制作

背景需求: 今天开始上班了,做开学前准备。我先整理电脑,然后把一些文件夹搭建好。 桌面上有一个超链接文件夹 作为通讯上报员,每周我都要保存每周的周计划安排表(包含每周五天活动内容和通讯文章) 以上学期为例 每个…

来自DeepSeek:形式化证明的RL框架

今天为大家带来来自DeepSeek(DS)的一篇内容详实且思想完备的形式化证明强化学习框架。 因篇幅有限,文中的预训练及SFT阶段不做展开,仅对文中的RLPAF的核心观点浅述: 为了在证明步骤生成中过程性引入中间策略状态,同时保持全证明生…

案例:LVS-DR模式

一、LVS-DR数据包流向分析 (1)客户端发送请求到 Director Server(负载均衡器),请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP)到达内核空间。 (2)Director Server 和 Real…

0、LVGL PC模拟器CodeBlocks

本篇文章目录导航 ♠♠ LVGL PC模拟器 ♣♣♣♣ 一、LVGL简介 ♦♦♦♦♦♦♦♦ 1.1 配置要求(LVGL V9版本) ♣♣♣♣ 二、LVGL PC模拟器 ♦♦♦♦♦♦♦♦ 2.1 CodeBlocks安装 ♦♦♦♦♦♦♦♦ 2.2 CodeBlocks环境包下载 ♦♦♦♦♦♦♦♦ 2.3 CodeBl…

【前端基础篇】JavaScript之BOM介绍

文章目录 浏览器对象模型(BOM)介绍1. 什么是BOM?2. Window 对象2.1 弹出框2.1.1 警告框2.1.2 确认框2.1.3 提示框 2.2 定时事件2.2.1 延时器2.2.2 定时器 2.3 Window 对象其他常用属性与方法2.3.1 获取窗口尺寸2.3.2 打开新窗口与关闭窗口2.3…

企业级数据采集解决方案:三步骤搞定大数据抓取

面对浩瀚如海的互联网数据,如何才能高效、准确地完成企业级数据采集?本文将揭秘一种简化大数据抓取的三步骤策略,助力企业与开发者轻松应对数据挑战,实现数据价值最大化。 正文: 在数字化转型的浪潮中,大…

【C/C++进阶】——文件操作之文本文件与二进制文件指针读写

【文件】——操作文件 目录 一:文件的定义 二:文件名 三:文件类型 3.1:二进制文件 3.2:文本文件 四:文件的打开与关闭 4.1:文件指针 4.2:文件的打开与关闭 五:…

【Stable Diffusion】ComfyUI-插件-IPAdapter图片融合

哈喽大家好,这期来分享下如何利用IPAdapter实现两张图的融合 参考图1 参考图2 融合图 图片融合 1、工作流 将基础工作流中的【IPAdapter Unified Loader】节点换成【IPAdapter Unified Loader Community】 【IPAdapter】节点换成【IPAdapter advanced】 【IPAd…

C语言指针详解(1)

目录 一、什么是指针 1.1、定义 1.2、取地址操作符(&) 1.3、指针变量和解引用操作符(*) 二、指针变量类型的意义 三、const修饰指针 3.1、const修饰变量 3.2、const修饰指针变量 3.2.1、const放在*的左边 3.2.2、 con…

docker的安装+docker镜像的基本操作

一.docker的介绍 1、Docker 是什么? Docker 是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采⽤“沙 盒”机制,容器之间不会存在任何接⼝。 Docker 通过 Linux Container(容器)技术将任意…

中秋节送礼推荐,数码好物精选推荐

中秋节将至,想要为家人或朋友准备一份特别的礼物吗?不妨考虑南卡Runner Pro5骨传导耳机。这款耳机不仅在功能上表现出色,而且设计独特,非常适合作为节日赠品。 卓越的性能,完美的体验 南卡Runner Pro5凭借其卓越的性…

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(模拟实现)

1.前言 1.1list与vector的不同 区别:list的迭代器底层和其他两个迭代器底层有很大区别,因为list的链式结构决定了与它们两个的不一样 相同:迭代器用法大致一样,其他成员函数的使用也大致一样。 vector与list都是STL中非常重要的序…

关于安装hbase的问题(操作系统-windows)

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…