当前位置: 首页 > news >正文

(一)光头整洁架构(Mediator Pattern/Result Patttern/UnitOfWork/Rich Domain)


文章目录

  • 项目地址
  • 一、CQRS
    • 1.1 统一DI注册
      • 1. 各个层注册自己服务
        • 2. Program里统一调用
    • 1.2 Mediat Pattern
      • 1. 创建command和handler
      • 2. Controller 使用CQRS
      • 3. MediaR的补充
  • 二、Result Pattern
    • 2.1 为什么使用
      • 1. 消除过度使用异常
      • 2. 统一错误处理
      • 3. 更清晰的API
      • 4. 便于全局错误处理
  • 三、Unit of Work
    • 3.1 创建UnitOfWork
      • 1. Application层创建接口
      • 2. 在Infrustracture层实现接口
    • 3.2 使用
  • 四、Rich Domain Model
    • 4.1 遵循法则
      • 1. 封装领域状态禁止外部访问
      • 2. 用值对象表示无身份概念
      • 3. 聚合根(Aggregate Root)管理内部一致性
      • 4. 不能在领域对象里直接调用外部服务
      • 5. 创建Domain不依赖数据库
      • 6. 使用领域服务处理跨对象逻辑
    • 4.2 改造实体
      • 1. 创建空私有构造器
      • 2. DB Configuration
        • 创建表的设置
        • 加载表的设置
    • 4.3 使用RichDomain
      • 1.CreateGymCommandHandler创建gym


项目地址

  • 教程作者:
  • 教程地址:
https://www.bilibili.com/video/BV1yT42117pM?spm_id_from=333.788.videopod.episodes&vd_source=791e6deaa9c8a56b1f845a0bc1431b71&p=3
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、CQRS

1.1 统一DI注册

1. 各个层注册自己服务

  • MediaR主要在Application层,所以在这里注册

在这里插入图片描述

2. Program里统一调用
  • program里调用各个层的DI方法
    在这里插入图片描述

1.2 Mediat Pattern

1. 创建command和handler

  • 创建Command的时候,继承接口IRequest<返回值>
  • 创建Handler的时候,继承接口IRequestHandler<Command, 返回值>
    在这里插入图片描述

2. Controller 使用CQRS

  1. 从DI里获取MediaR的服务
  2. 创建Command
  3. 通过MediaR发送命令
  4. 由于handler订阅里Command的处理,所以在handler里处理
    在这里插入图片描述

3. MediaR的补充

  1. _mediator.Send(command)一对一
  2. 如果想一对多的话需要使用
http://www.dtcms.com/a/353680.html

相关文章:

  • docker部署spring boot,安装jdk17、maven3.8.8详细步骤
  • 【C++】菱形继承深度解析+实际内存分布
  • 【题解】Codeforces Round 1045 (Div. 2) Problem.B ~ Problem.E
  • KANO 模型:功能不是“加一分”,而是“分五类”
  • YOLO-yaml/pt模型文件的差异
  • GitFlow工作流
  • 铠德科技为您详解静电与温冲背后的隐形损失
  • 下一代防火墙
  • nestjs 导出excel
  • JoyAgent-JDGenie开源多智能体系统详解:架构、部署与企业级应用案例
  • day22 回溯算法part01
  • Day6--HOT100--238. 除自身以外数组的乘积,41. 缺失的第一个正数,73. 矩阵置零
  • 前端漏洞(下)- ClickJacking漏洞
  • 指针 (六):sizeof和strlen细节强化之“做题篇”
  • stl--std::map
  • Java 使用Jna 调用 C# dll文件踩到的坑
  • SpringBoot整合Redis:从入门到实战的完整指南
  • 【Linux 小实战】自定义 Shell 的编写
  • LCD 上显示字符
  • zookeeper-集群扩缩容
  • 稳敏双态融合架构--架构师的练就
  • banner这个文件是怎么请求到后端数据的
  • Rust:引用
  • Vue-24-利用Vue3的element-plus库实现树形结构数据展示
  • Autodesk Maya 2026.2 全新功能详解:MotionMaker AI 动画、LookdevX 材质增强、USD 工作流优化
  • 在MiniOB源码中学习使用Flex与Bison解析SQL语句-第二节
  • 【Linux】正则表达式学习记录
  • FFMPEG api使用
  • 从disable_cost到disabled_nodes,最小代价预估质的飞跃
  • nestjs日志(nest-winston)