当前位置: 首页 > 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.xdnf.cn/news/1375759.html

相关文章:

  • k8s部署pgsql集群
  • 【PostgreSQL内核学习:通过 ExprState 提升哈希聚合与子计划执行效率】
  • Kafka 4.0 兼容性矩阵解读、升级顺序与降级边界
  • React Hooks 完全指南:从基础到高级的实战技巧
  • 路由基础(一):IP地址规划
  • 种草商城全链路技术实现指南
  • 【网络编程】NtyCo协程服务器的框架(轻量级的协程方案,人称 “小线程”)
  • 零后端、零配置:用 AI 编程工具「Cursor」15 分钟上线「Vue3 留言墙」
  • 【双指针- LeetCode】15.三数之和
  • python自学笔记14 NumPy 线性代数
  • anaconda本身有一个python环境(base),想用别的环境就是用anaconda命令行往anaconda里创建虚拟环境
  • 前端架构知识体系:css架构模式和代码规范
  • vscode 如何调试 python 2.7
  • springboot设计开发之基于springboot的校园社团管理系统/基于java的社团管理系统
  • UTXO 模型及扩展模型
  • Android -第二十一次技术总结
  • 海康相机的 HB 模式功能详解
  • Part 1️⃣:相机几何与单视图几何-第六章:相机模型
  • 【Redis 进阶】Redis 典型应用 —— 缓存(cache)
  • 【大前端】封装一个React Native与Android/IOS 端通用的埋点接口
  • 储能站运维管理一体化平台 | 图扑数字孪生
  • 《Linux 网络编程四:TCP 并发服务器:构建模式、原理及关键技术(以select )》
  • Linux 软件编程(十二)网络编程:TCP 并发服务器构建与 IO 多路复用
  • PPT处理控件Aspose.Slides教程:在.NET中开发SVG到EMF的转换器
  • 爬虫基础学习 - Xpath
  • 设计模式与设计原则简介——及其设计模式学习方法
  • 优选算法-常见位运算总结
  • uniapp中 ios端 scroll-view 组件内部子元素z-index失效问题
  • 基于 Node.js 的淘宝 API 接口开发:快速构建异步数据采集服务
  • 汽车电气系统的发展演进为测试带来了哪些影响?