DDD初步简单理解

news/2024/5/20 12:31:02/文章来源:https://blog.csdn.net/Y920036515/article/details/127302212

概述

最近有一个项目要使用DDD模式来写,大致整理一下笔记。

问题:为什么要使用DDD?大概要怎么使用DDD?

目录

概述

MVC和DDD比较

实例介绍

简洁代码逻辑示例

总结


MVC和DDD比较

 MVC(module,view,controller)模式是传统的3层架构的模式。

一般来说一个controller对应一个功能点,controller负责非业务逻辑的代码,service负责业务逻辑的代码,dao负责数据库交互。

DDD(domain,driver,design)模式是,虽然微服务将模块细分,做到了不同模块之间尽量解耦合,使得以往的单机环境负载复杂业务逻辑难,变得轻松。

但是并没有对模块内进一步细分。往往改变一个功能的时候,可能会涉及到其他功能的代码,这样就会导致后期维护没有那么容易。

实例介绍

例如登录系统这个功能。

传统的MVC模式就是:controller负责接收参数,service负责处理业务逻辑,dao和数据库交互。

service层有账号密码验证,手机短信业务的接收等,当功能较少的时候,还好区分,功能一多就很难维护了。

DDD模式:controller负责接收参数,应用层负责组装各个领域,领域层分为各个领域,基础服务层(也就是dao层)。

那么这个登录的功能就可以分为,账号密码验证域,短信业务域等分为很多个域。

 如果域足够大,可以将一个域对应一个实体。

但是通常情况下个人觉得,没必要区分得这么细,实体可以共用。

这样当业务发生变化的时候,是不是就到指定的域中去修改就可以了,不会影响其他业务逻辑,所以DDD主要是便于后期的维护。

简洁代码逻辑示例

xxx controller(){Service1 service1; //实现业务1Service2 service2; //实现业务2result 方法一(){//1.加载数据or参数校验————————————//2.业务检查---dumplingname();判断//3.实现具体业务(当具体业务发生变化的时候,可以直接更改具体实现的service)result ss1 = service1.getname();.//得到最后的数据,做返回或处理.}
}
注:xxxrepository用以实现数据存储

总结

1.也不是每个项目都适合使用DDD模式的,最好是当项目后期迭代会比较频繁,项目比较大,这样的话使用DDD的模式来做,后期维护会方便。

2.DDD其实看个人的理解,因为这个领域的划分,基本上是按照你对这个模块的理解来划分的,可能换一个人来,又会有不同的理解。

3.总之DDD是一种尝试,是对微服务的一种补充,但不是绝对必要,根据需要选择。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最适合跑步用的耳机有哪些、精选五款最优秀的跑步耳机推荐

越来越多的人选择在运动的时候佩戴蓝牙耳机,身为健身教练,也有很多人会让我们推荐蓝牙耳机,那么现在到底市面上哪些机型是最适合跑步的时候用的呢?我趁着最近有空搜集了一些资料跟我使用过的经验,给大家整理了一份最值…

揭秘EVM Opcodes

1. 引言 本文主要源自Macro团队的Gilbert在ETHNewYork 2022分享 Demystifying EVM Opcodes,同时结合evm.codes来理解。 学习EVM Opcodes,可成为更好的Solidity工程师。 更好的Solidity工程师,意味着: 1)理解Solidity…

【新手向】Rock5B官方Debian系统设置中文环境(简单设置)和远程桌面连接

一、环境与说明 Rock5B的系统:官方Debian11(2022-10-01版本) 前面的两篇文章都是在2022-09-19版本镜像中操作的,2022-10-01版本内置了中文字体,不要自己下载了。目前Rock5B的硬件版本是v1.42,大概在23年初…

一致性哈希原理

一致性哈希原理 分布式系统将数据分布到不同的节点来存储,比如一个分布式KV(key-value)缓存系统,某个key应该到哪个节点上获得,最直观的方法是使用哈希算法(hash(key)%n),对key进行…

python--绘制WRF模式近地面风场以及辐射

使用python自动化绘制WRF模式输出的风场以及辐射 本脚本主要用来自动化处理WRF模式数据,可以根据自己指定的时间范围以及时间步长绘制相应的数据 1 导入库 import cmaps import numpy as np import glob from netCDF4 import Dataset import matplotlib.pyplot a…

【C++】从零开始的CS:GO逆向分析3——写出一个透视

【C++】从零开始的CS:GO逆向分析3——写出一个透视本篇内容包括:1. 透视实现的方法介绍2. 通过进程名获取进程id和进程句柄3. 通过进程id获取进程中的模块信息(模块大小,模块地址,模块句柄)4. 读取游戏内存(人物ViewMatrix,敌人坐标,敌人生命值,敌人阵营)5. 三维坐标…

Java项目本地部署搭建实战SpringBoot高校宿舍管理系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的SpringBoot高校宿舍管理系统源码。 技术架构 技术框架:SpringBoot2.0.0 Mybatis1.3.2 Mysql5.7 layui运行环境:jdk8 IntelliJ IDEA maven3 宝塔面板 …

触摸屏分类和触摸屏校准原理

一、触摸屏分类 常用触摸屏分两种 1、电阻触摸屏校正原理:导电ITO层及整个电路电阻值会随时间电压等轻微偏移,为了更精确与LCD显示屏上的功能图案相对应,重新校正计算标准位置。不校正可能会线性偏移,好的触摸屏一般无需校正&am…

【面经】360大数据开发面经

30 分钟,不做题。 欢迎点击此处关注公众号,每天分享大数据开发面经 介绍实习项目 会涉及平台开发吗 平时常用的语言 回答了 Java。 Python 用过吗 Java 实现一个单例要注意什么 懒汉式: public class Singleton {private static Sing…

钢铁行业经销商商城系统:完善钢材管控方案,轻松实现控价和防伪

钢铁工业是全球经济发展的核心,也是现代社会可持续发展的核心。根据数据显示,2020年中国钢材产量为13.25亿吨,同比增长9.96%;生铁产量为8.88亿吨,同比增长9.77%;粗钢产量为10.53亿吨,同比增长5.72%。 图片来源&#xf…

网络编程之TCP模型

1. TCP模型 2. socket 最早的socket和消息队列、共享内存、管道一致,只能实现一台主机多个进程间通信,后期加入了tcp/ip协议,使得支持不同主机的进程间通信 socket本质上是一个编程接口给(API),是对TCP/IP协议的封装…

利用表面肌电信号对手部抓取动作分类的新型卷积网络模型

利用表面肌电信号对手部抓取动作分类的新型卷积网络模型 文章目录利用表面肌电信号对手部抓取动作分类的新型卷积网络模型一.相关研究二.材料和方法2.1 数据集2.2 数据预处理2.3 1D-1D-CNN三.实验结果分析四.相关研究对比参考文献一.相关研究 肌电信号号代表肌肉功能的特征&…

ReentrantLock可重入、可打断、锁超时实现原理

述 前面讲解了ReentrantLock加锁和解锁的原理实现,但是没有阐述它的可重入、可打断以及超时获取锁失败的原理,本文就重点讲解这三种情况。 可重入 可重入是指一个线程如果获取了锁,那么它就是锁的主人,那么它可以再次获取这把锁…

神经网络损失函数不下降,神经网络参数优化算法

1、matlab支持向量机预测数据怎么减小相对误差 采用网格搜索法。基于长短时记忆神经网络算法的支持向量机的预测方法,为了保证支持向量机预测结果的准确性减小相对误差,选用网格搜索法对支持向量机参数进行优化处理。为了减小在预测算法中,由…

如何快速制作一个自己心目中的可视化大屏?

从来没有接触过可视化的软件,也没有什么基础,我应该怎么开始学习可视化呢?遇到过不少朋友问:我从来没有接触过可视化的软件,也没有什么基础,我应该怎么开始学习可视化呢? 其实很简单,现在市面上有很多公司研发的可视化软件/编辑网站已经不再像过去一样要求使用者是专业…

linux下挂载新的磁盘

1、前提条件 虚拟机上已经新增了新的磁盘。 物理机上已经接好了新的硬盘。 2、挂载步骤 查看系统磁盘情况。使用以下命令:(如果没出现新增磁盘,重启系统) fdisk -l可以看到新增的磁盘/dev/sdb下还没有进行分区。 对新增的磁…

我终于读懂了设计模式的七大原则。。。

文章目录💥🐒设计模式的目的🐴什么叫单一职责原则?🐤什么叫接口隔离原则?🐫什么叫做依赖倒转原则?🐑什么是里氏替换原则?🐘什么叫开闭原则&#x…

拒绝项目经理沟通崩溃瞬间,驾驭项目复杂性

如何一句话终结和项目经理的聊天?这还需要凭实力?这不是信手拈来的事,分分钟让项目经理怒气值加满、停止沟通。来整两句:  紧急需要不停歇——深夜10点,客户:“这个新需求明天必须上。”  方案最后都是…

多测师肖sir_高级讲师_第2个月第27讲解jmeter性能硬件指标

jmeter性能硬件指标 一、采集硬件指标的工具nmon 1、基本介绍 nmon,帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新。 2、收集那些数据: nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能&#xff0c…

枚举

目录枚举枚举的定义枚举的使用枚举的常用方法枚举的构造方法枚举的优缺点枚举与反射用反射能拿到枚举的实例对象吗?为什么枚举实现的单例模式是安全的?(面试问题)枚举 枚举的定义 枚举是在JDK1.5以后引入的。主要用途是:将一组常量组织起来…