[图解]分层架构是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
这个是不能够出问题的

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值