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

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.mzph.cn/news/835244.shtml

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

相关文章

云粒智慧实时数仓的架构演进分享:OceanBase + Flink CDC

4月20日,在2024 OceanBase开发者大会上,云粒智慧的高级技术专家付大伟,分享了云粒智慧实时数仓的构建历程。他讲述了如何在传统数仓技术框架下的相关努力后,选择了OceanBase Flink CDC架构的实时数仓演进历程。 业务背景及挑战 …

iOS性能指标和性能测试工具

一: iOS性能测试指标 作为一名软件测试工程师,在测试 iOS 应用的性能时,需要关注以下几个方面: 1. 响应时间:应用的启动时间、页面加载速度、接口响应时间等。 2. CPU 使用率:应用在各种操作下的 CPU 占…

ADS基础教程11 - TouchStone文件的导出及导入

目录 一、 T o u c h S t o n e 介绍 \color{#4285f4}{ \mathbf{ 一、TouchStone介绍}} 一、TouchStone介绍 二、文件导出、导入方式 \color{#4285f4}{ \mathbf{ 二、文件导出、导入方式}} 二、文件导出、导入方式1.原理图操作1)原理图中导出2.原理图中导入 3.DDW中…

布局全球内容生态,酷开科技Coolita AIOS以硬核品质亮相

当前,全球产业链供应链格局持续重构,成为影响中国对外经济发展的重要因素。2024年4月15至5月5日,历史久、规模大、层次高,作为中国外贸风向标的第135届中国进出口商品交易会(即广交会)在美丽的广州隆重举行…

G2 - 人脸图像生成(DCGAN)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目录 理论知识DCGAN原理 模型结构逻辑结构物理结构 模型实现前期准备1. 导入第三方库2. 修改随机种子(相同的随机种子,第i次随机的结果是固定的)3.…

牛客小白月赛93

B交换数字 题目&#xff1a; 思路&#xff1a;我们可以知道&#xff0c;a*b% mod (a%mod) * (b%mod) 代码&#xff1a; void solve(){int n;cin >> n;string a, b;cin >> a >> b;for(int i 0;i < n;i )if(a[i] > b[i])swap(a[i], b[i]);int num1…

Python运维之定时任务模块APScheduler

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 定时任务模块APScheduler 一、安装及基本概念 1.1、APScheduler的安装 1.2、涉及概念 1.3、APScheduler的工作流程​编辑 二、配置调度器 …

这3种深拷贝实现,你都知道吗?

目录&#xff1a; 1、JSON.parse 2、structuredClone 3、cloneDeep

AI边缘计算盒子优势有哪些?如何实现低延迟处理?

AI边缘计算盒子作为一种集成人工智能技术的边缘计算设备&#xff0c;其优势主要体现在以下几个方面&#xff0c;万物纵横为您详细介绍&#xff1a; 1. 低延迟处理 AI边缘计算盒子靠近数据产生源头&#xff0c;能够即时处理数据&#xff0c;大幅减少数据传输至云端的时间&#…

GRU模块:nn.GRU层

摘要&#xff1a; 如果需要深入理解GRU的话&#xff0c;内部实现的详细代码和计算公式就比较重要&#xff0c;中间的一些过程及中间变量的意义需要详细关注。只有这样&#xff0c;才能准备把握这个模块的内涵和意义&#xff0c;设计初衷和使用方式等等。所以&#xff0c;仔细研…

QML及VTK配合构建类MVVM模式DEMO

1 创建QT QUICK项目 这次我们不在主程中加载VTK的几何&#xff1b; 在qml建立的控件&#xff0c;创建MyVtkObject类的单例&#xff0c;main中将指针和单例挂钩&#xff1b; 在MyVtkObject实例中操作 QQuickVTKRenderItem 类即可&#xff1b; 由于VTK的opengl显示是状态机&a…

学习笔记:【QC】Android Q telephony-data 模块

一、data init 流程图 主要分为3部分&#xff1a; 1.加载TelephonyProvider&#xff0c;解析apns-config.xml文件&#xff0c;调用loadApns将 xml中定义的数据&#xff0c;插入到TelephonyProvider底层的数据库中 2.初始化phone、DcTracker、TelephonyNetworkFactory、Conne…

Ubuntu意外断电vmdk损坏--打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。

背景&#xff1a;电脑资源管理器崩溃卡死&#xff0c;强行断电重启&#xff0c;结果虚拟机打不开了&#xff0c;提示打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。 删除lck文件&#xff1a;失败vmware-vdiskmanager修复 &#xff1a;提示无法修复最终用 VMFS Recovery挂载…

ntfs文件系统的优势 NTFS文件系统的特性有哪些 ntfs和fat32有什么区别 苹果电脑怎么管理硬盘

对于数码科技宅在新购得磁盘之后&#xff0c;出于某种原因会在新的磁盘安装操作系统。在安装操作系统时&#xff0c;首先要对磁盘进行分区和格式化&#xff0c;而在此过程中&#xff0c;操作者们需要选择文件系统。文件系统也决定了之后操作的流程程度&#xff0c;一般文件系统…

CSS-页面导航栏实现-每文一言(过有意义的生活,做最好的自己)

&#x1f390;每文一言 过有意义的生活,做最好的自己 目录 &#x1f390;每文一言 &#x1f6d2;盒子模型 &#x1f453;外间距 (margin) &#x1f97c;边框 &#x1f45c;内边距 切换盒子模型计算方案&#xff1a; &#x1f3a2; 浮动布局 浮动特点 &#x1f3c6;导航…

通俗的理解网关的概念的用途(四):什么是网关设备?(网络层面)

任何一台Windows XP操作系统之后的个人电脑、Linux操作系统电脑都可以简单的设置&#xff0c;就可以成为一台具备“网关”性质的设备&#xff0c;因为它们都直接内置了其中的实现程序。MacOS有没有就不知道&#xff0c;因为没用过。 简单的理解&#xff0c;就是运行了具备第二…

关于JAVA-JSP电子政务网实现参考论文(论文 + 源码)

【免费】关于JAVA-JSP电子政务网.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89292355关于JAVA-JSP电子政务网 摘 要 当前阶段&#xff0c;伴随着社会信息技术的快速发展&#xff0c;使得电子政务能够成为我国政府职能部门进行办公管理的一个重要内容&#x…

【PyTorch单点知识】深入理解与应用转置卷积ConvTranspose2d模块

文章目录 0. 前言1. 转置卷积概述2. nn.ConvTranspose2d 模块详解2.1 主要参数2.2 属性与方法 3. 计算过程&#xff08;重点&#xff09;3.1 基本过程3.2 调整stride3.3 调整dilation3.4 调整padding3.5 调整output_padding 4. 应用实例5. 总结 0. 前言 按照国际惯例&#xff0…

Docker快速搭建NAS服务——FileBrowser

Docker快速搭建NAS服务——FileBrowser 文章目录 前言FileBrowser的搭建docker-compose文件编写运行及访问 总结 前言 本文主要讲解如何使用docker在本地快速搭建NAS服务&#xff0c;这里主要写如下两种&#xff1a; FileBrowser1&#xff1a;是一个开源的Web文件管理器&…

运行SpringBoot项目失败?异常显示Can‘t load IA 32-bit .dll on a AMD 64-bit platform,让我来看看~

原因是&#xff0c;我放入jdk的bin文件夹下的tcnative-1.dll文件是32位的&#xff0c;那么肯定是无法在AMD 64位平台上加载IA 32位.dll。但是网站上给出的都是32位呀&#xff0c;没有64位怎么办&#xff1a; 其实当我们把“tomcat-native-1.2.34-openssl-1.1.1o-win32-bin.zip”…