DDD学习笔记一

news2024/11/24 2:50:23

DDD的基本原则

  • (1)保持语言、模型、代码三者一致
    语言:开发团队与领域专家沟通使用的自然语言。因为它与设计模型、代码是一致的,所以也称为通用语言。
    模型:设计的输出物,是对领域逻辑的精准建模。模型会充分体现具有领域含义的术语和关系。
    作为通用语言的核心,模型既充当着沟通业务逻辑的媒介,也直接指导开发实现。
    代码:模型和通用语言在实现层的精确表达。
  • (2)保持领域模型的独立性和内聚性
    独立性:领域模型可以被独立开发、测试和验收,与系统架构中的其他任何部分都没有依赖关系(只会被依赖)。
    内聚性:关联紧密的业务逻辑要通过模型组织在一起,不宜分散。模型不包含除领域逻辑之外的其他内容,
    且领域模型是业务逻辑的唯一载体,一处业务逻辑只能存在于一个模型内。
  • 通用语言应该是以消除了所有歧义之后的业务语言为基础,以领域模型为核心,以需求为边界,由领域专家和技术团队共同打造的沟通媒介
  • 软件工程的三个基本要素,复杂度控制、架构原则和团队协作

软件架构的6个原则

  • 1:语义一致性(Semantic Coherence)原则:相同的逻辑,代码中只能有一个处理的地方。不会为做同一件事情提供两种方法。
    (DDD)所有的业务逻辑都必须封装在领域模型中,领域模型是调用业务逻辑的唯一入口,保证了“一处逻辑只有一处代码”的原则

  • 2:开闭(Open-Closed)原则:软件模块对于需求应该是可以扩展的,但对于代码修改是关闭的
    技术上则可以采用接口、事件、晚绑定、多态、参数化和配置文件等各类形式。
    “把系统中稳定的部分与变化的部分分开管理”这一说法也是开闭原则的延伸

  • 3:最简(Minimize)原则:用最简单的机制来满足需求,不要引入不必要的组件、框架等,用极简的方式添加功能,
    会得到更健壮的系统

  • 4:高内聚低耦合(High Cohesion & Loose Coupling)原则
    内聚指的是模块内部的关系。高内聚即关系紧密的逻辑整体要组织到一起,每个模块都要有清晰定义的角色,
    不相关的逻辑不要放在一起。
    耦合是模块之间的关系。低耦合是说模块之间的依赖关系要尽可能少,依赖类型要弱,甚至完全不知道彼此最好

  • 5:关注点分离(Separation of Concern)原则:彼此不相关的关注点应该在架构组织上将它们分离,而不应该放在一起彼此影响

  • 6:可构建、可测试(Buildable & Testable)原则:容易被理解的,支持增量式构建并且方便测试
    在这里插入图片描述
    - DDD适用性评分表
    在这里插入图片描述
    - 测试、过程和架构的最佳搭档

  • 1 测试的最佳搭档:TDD和单元测试

  • 2 过程的最佳搭档:敏捷过程和DevOps

  • 3 架构的最佳搭档:六边形、洋葱和分层架构

DDD成熟度的5个度量维度(PTSTR)
在这里插入图片描述
3级成熟度模型
在这里插入图片描述

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

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

相关文章

多供应商食品零售商城系统的会员营销设计和实现

在多供应商食品零售商城系统中,会员营销是提升用户粘性和增加销售的重要手段。一个有效的会员营销系统能够帮助平台更好地了解用户需求,提供个性化服务,进而提高用户满意度和忠诚度。本文将详细探讨多供应商食品零售商城系统的会员营销设计与…

LeetCode 算法:二叉树的层序遍历 c++

原题链接🔗:二叉树的层序遍历 难度:中等⭐️⭐️ 题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:roo…

工控必备C#

微软的C# 语言? QT 熟了以后,Qt 更方便些 方法Signal Slot 感觉上一样 现在更推荐PyQt 来构建,底层还是Qt C 的那些库,Qt 的开源协议有点狗

前端技术栈学习:Vue2、Vue cli脚手架、ElementUI组件库、Axios

1 基本介绍 (1)Vue 是一个前端框架, 易于构建用户界面 (2)Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或项目整合 (3)支持和其它类库结合使用 (4&#…

Python——Flask开发框架基础使用介绍

目录 Flask简介 安装 Flask 创建一个简单的 Flask 应用 运行你的Flask应用 添加模板和静态文件 使用静态文件 处理表单和数据 使用 Flask 扩展 结论 Flask简介 Flask 是一个轻量级的 Python Web 框架,它以其简洁和灵活的特点广受欢迎。Flask 让开发者能够快…

Hi3861 OpenHarmony嵌入式应用入门--中断按键

本篇讲解gpio的中断使用方式。 硬件原理图如下,与上一篇一样的电路 GPIO API API名称 说明 hi_u32 hi_gpio_init(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO上下拉功能。 hi_u32 hi_gpio_set_dir(hi_gpio_…

6-47选择整数计算

整数计算: 用swing组件来实现整数计算,需要对整数计算的值进行校验。 import javax.swing.*; import java.awt.*; import java.awt.event.*;public class IntegerCalculator extends JFrame implements ActionListener {private JCheckBox[] checkBoxe…

【Docker】安装和加速

目录 1.安装 2.了解 docker 信息 3.查询状态 4. 重新启动Docker 1.安装 yum install –y docker 2.了解 docker 信息 cat /etc/redhat-release 3.查询状态 systemctl status docker 4.支持 1.12 的 docker 镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docke…

照片放大工具Topaz Gigapixel AI for Mac v7.1.2

Topaz Gigapixel AI软件是一款相当高效的PC端图像大小调整工具,更是一款能够为摄影师、设计师以及图像处理爱好者带来革命性体验的强大软件。它凭借先进的深度学习技术,打破了传统图像大小调整的限制,实现了真正意义上的无损放大和图像恢复。…

Matlab|【防骗帖】考虑时空相关性的风电功率预测误差建模与分析

目录 1 主要内容 2 部分程序 3 下载链接 1 主要内容 这个程序《考虑时空相关性的风电功率预测误差建模与分析》画的图片非常漂亮,和原文献基本一致,但是实际上内容并未实现出来,主要就是利用现有的风电预测的数据和结果做了相关的图&#…

CSS|01 CSS简介CSS的3种书写方式注释

CSS简介 什么是CSS CSS(Cascading Style Sheet),层叠样式表 或者 级联样式表,简称样式表。CSS的作用 主要用来给 HTML网页 设置外观或者样式。CSS的语法规则 h1 {属性:属性值}注意:1. CSS代码是由选择器和一对括号…

虚拟机装入kali linux

VMware 首先需要先安装VMware Workstation Pro可以根据这篇文章来下载VMware 下载kali linux Installer Images VS Virtual Machines Installer Images(安装镜像)Virtual Machines(虚拟机) 直接访问硬件,定制内核…

JupyterLab使用指南(七):JupyterLab使用 LaTeX 生成数学公式

在 JupyterLab 中,可以使用 LaTeX 语法生成复杂的数学公式。JupyterLab 内置对 LaTeX 的支持,使得我们可以方便地在 notebook 中编写和展示数学公式。以下是详细的步骤和示例。 1. 使用 LaTeX 生成数学公式 LaTeX 是一种专门用于排版数学公式的语言。J…

springboot+vue+mybatis门窗管理系统+PPT+论文+讲解+售后

如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为了解决现有问题而产生的。针对于仓库信息管理方…

如何使用 Swift 中的 GraphQL

文章目录 前言基础知识ApolloGraphQL结论前言 我一直在分享关于类型安全和在 Swift 中构建健壮 API 的更多内容。今天,我想继续探讨类型安全的话题,介绍 GraphQL。GraphQL 是一种用于 API 的查询语言。本周,我们将讨论 GraphQL 的好处,并学习如何在 Swift 中使用它。 基础…

CVPR讲座总结(二)-探索图像生成基础模型的最新进展探索多模态代理的最新进展:从视频理解到可操作代理

引言 在CVPR24上的教程中,微软高级研究员Linjie Li为我们带来了多模态代理的深入探索。这些代理通过整合多模态专家和大语言模型(LLM)来增强感知、理解和生成能力。本文总结了Linjie Li的讲座内容,重点介绍了多模态记忆、可操作代…

考研数学|张宇和武忠祥,强化能不能同时跟?

可以说你跟武老师学明白了,120完全没问题!如果追求更高,宇哥的怀抱也想你敞开! 学长我21年一战数学83,总分没过线,22年二战143,逆袭上岸211!市面上的老师我基本都听过,最…

进阶篇07——InnoDB引擎介绍

概览 逻辑存储结构 架构 当执行增删改查操作时,操作的是缓冲区的数据,如果缓冲区里没有要操作的数据,就会从磁盘中读取数据加载到缓冲区中;缓冲区的数据会以一定的频率通过后台线程刷新到磁盘中永久存储。 内存结构 磁盘结构 后…

H5、Vue3、UniApp实现抖音短视频功能

H5、Vue3、UniApp实现抖音短视频功能 ml-swiper https://ext.dcloud.net.cn/plugin?id18973 可 0 配置,高性能、低代码、全端兼容 APP端效果图 微信小程序端效果图 Vue网页端效果图 ml-swiper 可 0 配置,高性能、低代码、全端兼容 APP端效果图 …

基于Spring Boot+VUE职称评审管理系统

1管理员功能模块 管理员登录,通过填写注册时输入的用户名、密码、角色进行登录,如图1所示。 图1管理员登录界面图 管理员登录进入职称评审管理系统可以查看首页、个人中心、用户管理、评审员管理、省份管理、评审条件管理、职称申请管理、结果公布管理、…