0
00:00:04,120 --> 00:00:07,267
上次我们说到这个Aggregate
1
00:00:07,267 --> 00:00:10,100
就是聚合体的问题
2
00:00:11,340 --> 00:00:16,170
说问题在,它是把重点放在结点上面
3
00:00:17,580 --> 00:00:18,160
4
00:00:18,470 --> 00:00:19,870
放在这个上面
5
00:00:22,360 --> 00:00:25,186
但实际上这个意义不大
6
00:00:25,186 --> 00:00:26,600
为什么
7
00:00:27,250 --> 00:00:28,690
对象由它的部件组成
8
00:00:28,690 --> 00:00:32,187
然后它又可以作为部件,组成更大的对象
9
00:00:32,187 --> 00:00:33,832
你指着一个结点说
10
00:00:33,832 --> 00:00:35,272
这是一个聚合体
11
00:00:35,272 --> 00:00:36,918
你说,谁不是聚合体
12
00:00:36,918 --> 00:00:37,330
对吧
13
00:00:40,830 --> 00:00:42,240
后来我们说了
14
00:00:42,990 --> 00:00:44,460
接下来再看
15
00:00:44,750 --> 00:00:46,500
聚合根的问题
16
00:00:47,530 --> 00:00:49,347
那上次也说到了
17
00:00:49,347 --> 00:00:52,462
聚合根,之前并没有这个说法
18
00:00:52,462 --> 00:00:53,760
这是Evans造的
19
00:00:55,310 --> 00:00:57,200
可惜,这是一个
20
00:00:57,560 --> 00:00:58,980
伪创新
21
00:01:00,110 --> 00:01:01,700
那伪创新在哪里呢
0
00:00:00,240 --> 00:00:02,966
我们先来看书里面的定义
1
00:00:02,966 --> 00:00:05,919
上一次视频出现过了
2
00:00:05,919 --> 00:00:07,510
我们给它标了号
3
00:00:08,630 --> 00:00:09,830
它说
4
00:00:11,560 --> 00:00:12,540
5
00:00:13,640 --> 00:00:15,480
一个Aggregate
6
00:00:15,950 --> 00:00:19,700
是一簇相关联的对象
7
00:00:20,100 --> 00:00:23,730
根是Aggregate的成员
8
00:00:24,990 --> 00:00:28,410
我们还是拿上一次植物那个
9
00:00:30,140 --> 00:00:31,025
来举例
10
00:00:31,025 --> 00:00:32,797
按照这个说法的话
11
00:00:32,797 --> 00:00:34,790
我们可以这样表述
12
00:00:35,280 --> 00:00:37,989
因为植物、根、茎、叶是这里嘛
13
00:00:37,989 --> 00:00:38,482
对吧
14
00:00:38,482 --> 00:00:39,467
这四个嘛
15
00:00:39,467 --> 00:00:39,960
对吧
16
00:00:40,240 --> 00:00:45,580
这四个,植物加根、茎、叶这一簇就组成了一个Aggregate
17
00:00:46,020 --> 00:00:50,710
其中植物是该aggregate的聚合根
18
00:00:53,240 --> 00:00:55,420
那我们来看这个有什么问题
0
00:00:00,000 --> 00:00:02,000
我们先来看①的问题
0
00:00:00,560 --> 00:00:01,940
问题是什么
1
00:00:02,250 --> 00:00:03,440
植物
2
00:00:04,130 --> 00:00:07,920
已经包含根、茎、叶在里面了
3
00:00:11,320 --> 00:00:13,904
已经包含它的部件在里面了
4
00:00:13,904 --> 00:00:16,704
它不能也不需要再和这些部件
5
00:00:16,704 --> 00:00:18,858
再和这些部件并列了
6
00:00:18,858 --> 00:00:20,797
你这样说,就变成什么
7
00:00:20,797 --> 00:00:23,166
你看,植物里面有根、茎、叶了
8
00:00:23,166 --> 00:00:24,890
它再和它的根、茎、叶
9
00:00:26,200 --> 00:00:26,920
10
00:00:27,200 --> 00:00:28,380
再一起
11
00:00:28,660 --> 00:00:30,880
构成一个aggregate
12
00:00:31,540 --> 00:00:33,120
这个不对的
13
00:00:37,170 --> 00:00:39,380
那什么说法是可以的
14
00:00:40,610 --> 00:00:40,848
15
00:00:40,848 --> 00:00:43,710
比如说,你可以说,在类的级别
16
00:00:44,320 --> 00:00:50,010
植物这个类跟根、茎、叶的类是整体-部分的关联
17
00:00:50,290 --> 00:00:50,530
18
00:00:50,530 --> 00:00:53,895
这是我们上一个视频说的
19
00:00:53,895 --> 00:00:54,856
aggregation
20
00:00:54,856 --> 00:00:57,020
就是聚合关联,这可以
21
00:00:58,220 --> 00:01:00,044
或者说,在对象级别
22
00:01:00,044 --> 00:01:03,920
某一个植物对象由若干根、茎、叶对象组成
23
00:01:03,920 --> 00:01:05,060
这个也可以
24
00:01:05,840 --> 00:01:08,650
但是不能像刚才那样说
25
00:01:08,650 --> 00:01:13,250
植物和它的根、茎、叶一起组成了一个植物的
26
00:01:13,790 --> 00:01:14,900
聚合体
27
00:01:15,410 --> 00:01:16,960
这个就不对了
28
00:01:21,470 --> 00:01:24,660
那怎样把刚才这个圆过去呢
29
00:01:27,840 --> 00:01:30,060
一个做法可以是这样
30
00:01:31,290 --> 00:01:34,190
你可以把植物排除在
31
00:01:34,190 --> 00:01:37,091
组成aggregate的一簇相关联对象之外
32
00:01:37,091 --> 00:01:38,430
你可以这样说
33
00:01:43,410 --> 00:01:48,630
一簇根、茎、叶对象组成了植物这个aggregate
34
00:01:50,810 --> 00:01:51,042
35
00:01:51,042 --> 00:01:51,970
这个可以
36
00:01:53,180 --> 00:01:55,922
但我们前面也讲了,没有意义
37
00:01:55,922 --> 00:01:59,808
为什么,任何一个对象,它都是一个聚合体
38
00:01:59,808 --> 00:02:02,780
然后它又可以和其他对象组成
39
00:02:03,060 --> 00:02:04,718
更大的聚合体,对不对
40
00:02:04,718 --> 00:02:07,298
你指着一个说,这是一个聚合体
41
00:02:07,298 --> 00:02:08,220
意义不大
42
00:02:10,410 --> 00:02:13,050
而且怎么样,Evans又说了
43
00:02:13,410 --> 00:02:16,181
根是aggregate的成员
44
00:02:16,181 --> 00:02:17,290
你看,他说
45
00:02:18,640 --> 00:02:20,720
它是它的成员
46
00:02:21,780 --> 00:02:21,965
47
00:02:21,965 --> 00:02:24,190
所以你不能把它排除出去
48
00:02:26,970 --> 00:02:29,080
这个是圆不过去了
49
00:02:33,590 --> 00:02:35,250
这是第一个问题
50
00:02:37,360 --> 00:02:39,190
第二个问题说
51
00:02:40,780 --> 00:02:43,618
某某是这个什么什么的根的问题
52
00:02:43,618 --> 00:02:44,430
那我们看
53
00:02:45,210 --> 00:02:45,434
54
00:02:45,434 --> 00:02:47,454
还是拿植物来说
55
00:02:47,454 --> 00:02:50,820
植物由根、茎、叶什么什么组成
56
00:02:51,170 --> 00:02:51,426
57
00:02:51,426 --> 00:02:55,017
就算我们把植物排除出去
58
00:02:55,017 --> 00:02:58,608
我们不说植物由植物、根、茎、叶组成
59
00:02:58,608 --> 00:02:58,865
60
00:02:58,865 --> 00:03:01,430
我们就不说这个
61
00:03:02,280 --> 00:03:04,805
①这个我们把植物给排除出去
62
00:03:04,805 --> 00:03:05,777
这个不要了
63
00:03:05,777 --> 00:03:05,971
64
00:03:05,971 --> 00:03:06,360
你看
65
00:03:07,590 --> 00:03:09,740
植物由这个这个什么组成
66
00:03:11,100 --> 00:03:15,520
所以呢,植物是根、茎、叶这些的根
67
00:03:15,520 --> 00:03:16,110
对吗
68
00:03:17,780 --> 00:03:20,056
这好像,植物是根的根
69
00:03:20,056 --> 00:03:23,850
那我们看,汽车由发动机……组成
70
00:03:23,850 --> 00:03:26,380
汽车是它这些部件的根
71
00:03:27,280 --> 00:03:29,940
墙由砖垒成的
72
00:03:30,220 --> 00:03:31,950
墙是砖的根
73
00:03:32,740 --> 00:03:34,880
分子由原子组成
74
00:03:34,880 --> 00:03:37,020
分子是原子的根
75
00:03:39,520 --> 00:03:40,640
这个这个
76
00:03:41,150 --> 00:03:42,561
不对呀
77
00:03:42,561 --> 00:03:42,797
78
00:03:42,797 --> 00:03:44,679
这个词就不对了
79
00:03:44,679 --> 00:03:45,150
对吧
80
00:03:49,310 --> 00:03:52,150
对象就是由它的部件
81
00:03:52,430 --> 00:03:54,450
这个部件包括它的属性值
82
00:03:54,730 --> 00:03:55,630
包括
83
00:03:56,450 --> 00:03:59,295
关联到的其他对象组成的
84
00:03:59,295 --> 00:04:02,140
如果你把这个部件去掉了
85
00:04:03,150 --> 00:04:05,190
对象就什么都不剩了
86
00:04:05,190 --> 00:04:05,870
对不对
87
00:04:07,690 --> 00:04:10,624
你把人的所有的零件都拆掉了
88
00:04:10,624 --> 00:04:12,190
这个人还有什么呀
89
00:04:12,470 --> 00:04:14,470
除了这个标识之外
90
00:04:14,750 --> 00:04:15,640
对吧
91
00:04:17,010 --> 00:04:18,421
哪里有什么根
92
00:04:18,421 --> 00:04:20,437
所以这个所谓的聚合根
93
00:04:20,437 --> 00:04:22,050
它实际上就是一个错觉
94
00:04:24,050 --> 00:04:25,800
这个错觉哪里来的