[图解]分层架构是DDD提出的吗

news2024/10/7 12:21:27

1
00:00:00,040 --> 00:00:02,640
今天我们来说一下分层架构

2
00:00:04,310 --> 00:00:06,730
我经常看到一些文章

3
00:00:06,740 --> 00:00:10,390
或者是在开发团队里面看到

4
00:00:10,400 --> 00:00:12,940
有开发人员说,分层架构

5
00:00:12,950 --> 00:00:15,370
是DDD提出来的

6
00:00:15,580 --> 00:00:17,570
是领域驱动设计提出来的

7
00:00:19,450 --> 00:00:20,280
是不是这样的

8
00:00:21,630 --> 00:00:26,460
大家可以用这个关键词

9
00:00:26,550 --> 00:00:31,100
例如,DDD提出分层之类的或领域驱动设计

10
00:00:31,110 --> 00:00:32,260
提出分层之类的

11
00:00:32,900 --> 00:00:37,750
去搜微信的公众号也好

12
00:00:37,760 --> 00:00:42,240
搜百度Google都可以

13
00:00:44,050 --> 00:00:49,370
它就会有,DDD提出什么之类的

14
00:00:51,530 --> 00:00:57,120
就有些像,比如说,我们一些歌曲

15
00:00:58,600 --> 00:01:01,620
有的人他可能没听过以前的原唱

16
00:01:02,250 --> 00:01:03,090
他听的翻唱

17
00:01:03,830 --> 00:01:06,510
他就以为翻唱是原唱

18
00:01:07,220 --> 00:01:08,670
这种很多

19
00:01:08,680 --> 00:01:10,710
因为他懂得少

20
00:01:12,520 --> 00:01:15,080
所以他知识就是错误的

21
00:01:16,640 --> 00:01:20,050
我们来看一下分层架构的问题

22
00:01:23,100 --> 00:01:24,180
包括Eric Evans自己

23
00:01:24,190 --> 00:01:27,240
他也没有说提出什么之类的

24
00:01:27,250 --> 00:01:29,960
他只是很平淡地说了一下

25
00:01:30,730 --> 00:01:31,970
如果说他自己认为

26
00:01:31,980 --> 00:01:35,340
这是他自己的创新的一个东西

27
00:01:35,350 --> 00:01:36,410
提出来什么的

28
00:01:36,680 --> 00:01:38,250
他肯定会很大的篇幅

29
00:01:38,970 --> 00:01:41,610
或者比较着重地来说一下这个问题

30
00:01:41,620 --> 00:01:43,840
他没有说,那说明什么

31
00:01:45,730 --> 00:01:48,980
他肯定认为这个在他这个书里面来说

32
00:01:48,990 --> 00:01:53,950
就不是一个他自己的东西

33
00:01:55,900 --> 00:01:58,610
但是我们很多开发人员,这个书里面有这个

34
00:01:58,980 --> 00:02:01,280
所以是他提出的,胡说八道的

35
00:02:01,700 --> 00:02:05,500
而且你看,他这里给出了一些引用的文献

36
00:02:05,510 --> 00:02:05,860
对吧

37
00:02:05,870 --> 00:02:13,060
比如说,Buschmann1996年

38
00:02:13,350 --> 00:02:17,550
说的就是这本书,原书是96年出版的

39
00:02:17,680 --> 00:02:22,690
POSA,面向模式的软件体系结构

40
00:02:22,700 --> 00:02:25,290
或者说面向模式的软件架构

41
00:02:27,070 --> 00:02:29,780
这套书已经一共出了5卷

42
00:02:30,900 --> 00:02:32,370
这个是第1卷了

43
00:02:32,580 --> 00:02:38,110
里面就介绍了层这个架构模式

44
00:02:39,780 --> 00:02:42,530
专门用比较大的篇幅来介绍

45
00:02:45,230 --> 00:02:47,310
但实际上Evans这里的话

46
00:02:47,320 --> 00:02:48,620
96年

47
00:02:48,630 --> 00:02:52,580
还有另外的,像Martin Fowler

48
00:02:54,080 --> 00:02:55,990
Fowler发布了分析模式

49
00:02:57,410 --> 00:03:02,740
它里面也有一章专门来介绍架构模式的

50
00:03:02,750 --> 00:03:03,980
分层架构模式的

51
00:03:05,590 --> 00:03:07,270
而且Fowler书里面

52
00:03:07,280 --> 00:03:12,510
他说,20世纪70年代就提出来了

53
00:03:13,170 --> 00:03:13,610


54
00:03:15,850 --> 00:03:17,140
肯定比这个要早得多

55
00:03:21,120 --> 00:03:23,430
Fowler后来在03年的时候

56
00:03:23,600 --> 00:03:28,370
刚才分析模式96年,03年的时候

57
00:03:28,380 --> 00:03:33,080
他在他的企业用架构模式这个书里面

58
00:03:33,330 --> 00:03:34,920
他就专门第一章就说了

59
00:03:34,930 --> 00:03:37,390
一个整章来说分层的问题

60
00:03:39,560 --> 00:03:41,190
这个企业应用架构模式

61
00:03:41,320 --> 00:03:43,470
我们最近正在重新审校

62
00:03:43,720 --> 00:03:48,400
我们审校里面内容,改一些地方

63
00:03:49,000 --> 00:03:51,040
把一些有错的纠正掉

64
00:03:51,530 --> 00:03:53,310
然后出一个新的中译本

65
00:03:54,890 --> 00:03:56,360
应该年底能够出来

66
00:03:59,120 --> 00:04:03,000
或者我们小时候,指的是我们刚毕业的时候

67
00:04:03,890 --> 00:04:06,170
98年,你看,我97年开始工作

68
00:04:07,980 --> 00:04:12,120
我第一个工作,第一个职业阶段

69
00:04:12,130 --> 00:04:13,680
用的开发工具

70
00:04:14,820 --> 00:04:16,980
就是VB,Visual Basic

71
00:04:17,400 --> 00:04:18,710
从VB4.0 

72
00:04:18,720 --> 00:04:19,910
16位的

73
00:04:19,920 --> 00:04:22,150
VB4.0用到VB6.0

74
00:04:23,430 --> 00:04:24,670
最熟悉的书

75
00:04:24,680 --> 00:04:26,870
就类似这种书,是我们经常看的了

76
00:04:27,470 --> 00:04:28,220
当时

77
00:04:28,230 --> 00:04:30,500
也没有什么Google什么之类,没有的

78
00:04:31,280 --> 00:04:34,260
网络上什么面向 Google编程

79
00:04:34,270 --> 00:04:37,060
ctrl c,ctrl v没有de1

80
00:04:37,350 --> 00:04:41,560
有什么,MSDN光盘

81
00:04:43,300 --> 00:04:45,580
当时人家寄过来一堆光盘

82
00:04:46,100 --> 00:04:47,910
很多,人家不要钱一样

83
00:04:48,040 --> 00:04:49,550
给你撒光盘

84
00:04:51,110 --> 00:04:53,830
然后把光盘放到电脑里面看,这样的

85
00:04:53,840 --> 00:04:57,670
你以为说有一个网络,没有

86
00:04:58,050 --> 00:05:00,400
没有了,你要搜你的光盘,要么就看书

87
00:05:00,410 --> 00:05:03,640
书厚厚的一本,小时候看的书

88
00:05:03,730 --> 00:05:06,270
你看,三层架构

89
00:05:09,250 --> 00:05:15,120
你看,VB5,97年出的书,就是三层结构

90
00:05:19,240 --> 00:05:23,730
当然分层架构有很多种变体了

91
00:05:24,150 --> 00:05:27,440
对于我们企业的这种应用来说

92
00:05:28,090 --> 00:05:31,310
有很多变体,这种变体的话怎么来的

93
00:05:31,320 --> 00:05:33,230
可以,比如说,添加层

94
00:05:33,880 --> 00:05:34,290


95
00:05:34,670 --> 00:05:36,320
三层,你可以添加层

96
00:05:37,540 --> 00:05:41,010
在表示跟这个领域之间

97
00:05:41,020 --> 00:05:43,440
你可以加一个视图模型

98
00:05:44,300 --> 00:05:48,880
就是相当于把这种展示的把它先有个结构

99
00:05:50,040 --> 00:05:54,650
还有你不能直接调用这个领域类

100
00:05:54,660 --> 00:05:56,010
你要有一个应用服务

101
00:05:56,770 --> 00:05:58,440
然后在这里,数据访问之间

102
00:05:58,450 --> 00:05:59,920
你添加一个数据映射层

103
00:06:02,360 --> 00:06:05,860
第二个变体来源就是说添加抽象来解耦

104
00:06:06,830 --> 00:06:14,780
比如说A依赖于B,我可以怎么,依赖一个IB

105
00:06:14,790 --> 00:06:17,690
IB就是一个接口

106
00:06:17,700 --> 00:06:18,810
或者是一个抽象类

107
00:06:19,340 --> 00:06:21,780
然后B继承

108
00:06:21,790 --> 00:06:23,350
或者实现IB

109
00:06:24,800 --> 00:06:29,180
表面上看起来好像原来的依赖关系

110
00:06:29,190 --> 00:06:30,540
就被解耦了

111
00:06:31,780 --> 00:06:33,370
当然这个就不多说了

112
00:06:33,380 --> 00:06:35,760
什么控制反转

113
00:06:36,090 --> 00:06:38,130
还有什么依赖注入等等

114
00:06:39,950 --> 00:06:41,100
就是说这些东西

115
00:06:42,950 --> 00:06:44,350
所以就很多变体

116
00:06:47,080 --> 00:06:48,430
但是不管怎么变体的话

117
00:06:48,440 --> 00:06:49,630
有一个是不变的

118
00:06:49,640 --> 00:06:50,790
你怎么分也好

119
00:06:52,560 --> 00:06:54,600
最开始之所以分层的目的

120
00:06:54,610 --> 00:06:57,960
就是要这个,领域逻辑要独立

121
00:06:58,970 --> 00:07:00,720
你怎么变体来说

122
00:07:00,730 --> 00:07:03,810
这个是不能够出问题的

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

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

相关文章

centos7下fastdfs分布式部署

需要先在159及120服务器上安装fastdfs服务 可参考:centos7部署FastDFS服务_centos fastdfs 增加到服务中-CSDN博客 1、整体架构,使用3个服务器节点,其中两台为跟踪器节点及存储节点,一台服务器搭建nginx做统一入口进行负载均衡 …

机器学习算法应用——朴素贝叶斯分类器

朴素贝叶斯分类器 朴素贝叶斯分类器(Naive Bayes Classifier)是一种基于贝叶斯定理和特征条件独立假设的分类方法。它适用于分类任务,特别是文本分类、垃圾邮件识别等领域。 原理 朴素贝叶斯分类器基于以下两个主要假设: 特征条…

【Python】selenium爬虫常见用法和配置,以及常见错误和解决方法

欢迎来到《小5讲堂》 这是《Python》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言无执行文件代码报错信息错误路径手动下载自动下载 选项配置Ch…

CubeMX重写配置生成代码后注释出现乱码的解决方式

1.搜索环境变量 2.就是这里,每个版本Windows可能不太一样 3.新建 4.系统变量下面新建 变量:JAVA_TOOL_OPTIONS 值:-Dfile.encodingUTF-8 如果还不行,那我也没辙,哈哈。

python自动化生成ppt

使用Python和python-pptx创建PPT 在这篇博客中,我们将探讨如何使用Python库python-pptx来创建一个简单的PowerPoint演示文稿(PPT)。这个库允许我们以编程方式创建幻灯片、添加文本、图片、表格和自定义形状。 安装python-pptx 首先&#x…

springboot -多数据源管理方案

多数据源的配置有多种方式 方式一 、依赖dataSource的配置 1.建立多数据源配置 spring:# 数据源配置datasource:pdm:driver-class-name: oracle.jdbc.driver.OracleDriverjdbc-url: jdbc:oracle:thin:10.216.xxx.xxx:3000:orclusername: cfpdmpassword: capecapp:driver-cla…

kali卸载openjdk并安装 jdk1.8

一、卸载自带的openjdk 1.1、kali自带的 java 是 openjdk,如果需要开发安卓或者其他应用程序,则需要将 openjdk 换成 jdk1.8。 1.2、查看kali自带的openjdk版本 ┌──(root㉿kali)-[~] └─# java -version openjdk version "17.0.10" 2024…

Wireshark下载安装和使用教程

Wireshark下载安装和使用教程 Wireshark(前身 Ethereal)是一个网络包分析工具。该工具主要是用来捕获网络数据包,并自动解析数据包,为用户显示数据包的详细信息,供用户对数据包进行分析。 它可以运行在 Windows 和 L…

淘宝扭蛋机小程序:扭动未来,乐享购物新纪元

一、引言 在数字化浪潮中,淘宝始终走在创新的前沿,不断探索与尝试新的购物方式。今天,我们骄傲地推出淘宝扭蛋机小程序,以全新的视角和体验,让您在购物的同时感受到无尽的乐趣与惊喜。 二、探索未知的购物乐趣 淘宝…

清华团队开发首个AI医院小镇模拟系统;阿里云发布通义千问 2.5:超越GPT-4能力;Mistral AI估值飙升至60亿美元

🦉 AI新闻 🚀 清华团队开发首个AI医院小镇模拟系统 摘要:来自清华的研究团队最近开发出了一种创新的模拟系统,名为"Agent Hospital",该系统能够完全模拟医患看病的全流程,其中包括分诊、挂号、…

机器视觉任务中语义分割方法的进化历史

机器视觉任务中语义分割方法的进化历史 一、基于传统方法的图像分割二、基于卷积神经网络的图像分割三、基于Attention机制的图像分割四、语义分割模型的挑战与改进 在图像处理领域,传统图像分割技术扮演着重要角色。 一、基于传统方法的图像分割 这些方法包括大津…

【每日八股】淘天一面

🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害 rocketmq的消息重复发送问题?如何保证幂等? 如何保证幂等性: 消息 Key 设置:不建议…

基于.NET WinForms 数据CURD功能的实现

使用开发工具 VS 2022 C#,数据库MS SQL SERVER 2019 ,基于NET WinForms,实现数据记录的创建(Create)、更新(Update)、读取(Read)和删除(Delete)等功能。主要控件包括:DataGridView,SqlDataApater , DataTab…

JSP ssm 智能水表管理myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP ssm 智能水表管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采…

生成指定范围的随机整数

private static final Random RANDOM new Random();// 生成指定范围的随机整数public static int generateRandomInt(int min, int max) {return RANDOM.nextInt(max - min 1) min;}public static void main(String[] args) {Integer count 5;Integer randomInt generateR…

缓存菜品操作

一:问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大。 二:实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: 每个分…

【UnityRPG游戏制作】Unity_RPG项目_玩法相关※

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:就业…

【基础算法总结】滑动窗口二

滑动窗口二 1.水果成篮2.找到字符串中所有字母异位词3.串联所有单词的子串4.最小覆盖子串 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.水…

Dbeaver network unavailable due to certificate issue

场景:出现在DBeaver连接数据库下载驱动的时候 解决: 别勾选就可以了

Java的基本语法

文章目录 Java语言的一些基本语法要点:Java语言的一些进阶概念和特性:Java代码示例基础示例1. Hello World2. 计算两个数的和 进阶示例1. 使用Lambda表达式过滤列表2. 实现一个简单的泛型类3. 使用多线程打印数字 异常处理示例捕获并处理异常 接口使用示…