[图解]DDD领域驱动设计伪创新-聚合根03

 

 

 

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
这个错觉哪里来的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值