1069
00:45:36,160 --> 00:45:37,660
那下一个用途
1070
00:45:39,010 --> 00:45:43,830
就是为分割系统提供一些参考的证据了
1071
00:45:47,230 --> 00:45:49,470
现在很多那个
1072
00:45:49,880 --> 00:45:51,770
流行有微服务架构
1073
00:45:51,770 --> 00:45:53,240
把系统分割成
1074
00:45:53,520 --> 00:45:53,714
1075
00:45:53,714 --> 00:45:56,246
若干微服务,实际上就是组件嘛
1076
00:45:56,246 --> 00:45:58,000
就是之前说的组件
1077
00:45:59,890 --> 00:46:02,010
分成几个独立的组件
1078
00:46:03,570 --> 00:46:05,745
并不是什么新的东西
1079
00:46:05,745 --> 00:46:07,485
改个名字叫微服务
1080
00:46:07,485 --> 00:46:09,660
实际上就是UML里面的组件
1081
00:46:12,400 --> 00:46:14,922
那可能有的人这里经常乱说
1082
00:46:14,922 --> 00:46:16,280
跟组件不一样
1083
00:46:16,280 --> 00:46:17,445
微服务是什么
1084
00:46:17,445 --> 00:46:20,550
微服务是整个那个数据什么的
1085
00:46:21,740 --> 00:46:24,090
都是独立的
1086
00:46:24,860 --> 00:46:25,771
那组件的话
1087
00:46:25,771 --> 00:46:28,869
它代码上独立,数据是一体的
1088
00:46:28,869 --> 00:46:30,692
那根本就不是组件
1089
00:46:30,692 --> 00:46:32,150
组件的意思就是说
1090
00:46:33,020 --> 00:46:35,880
你本身的这个,所有的这个
1091
00:46:36,940 --> 00:46:40,400
数据、逻辑都是一个独立的
1092
00:46:41,960 --> 00:46:43,290
如果说你只是
1093
00:46:43,720 --> 00:46:44,655
把几个类
1094
00:46:44,655 --> 00:46:45,590
的逻辑
1095
00:46:45,980 --> 00:46:46,961
封装成组件
1096
00:46:46,961 --> 00:46:51,671
然后下面数据还是一起的,那不是组件
1097
00:46:51,671 --> 00:46:54,418
你这个连面向对象都不算
1098
00:46:54,418 --> 00:46:55,400
因为你这个
1099
00:46:55,680 --> 00:46:59,714
数据随便乱访问的,那根本就什么都不是
1100
00:46:59,714 --> 00:47:00,320
对不对
1101
00:47:01,370 --> 00:47:02,320
所以呢
1102
00:47:02,600 --> 00:47:04,720
很多人不了解历史
1103
00:47:04,720 --> 00:47:06,370
乱伪创新
1104
00:47:07,390 --> 00:47:09,370
那组件怎么分割
1105
00:47:09,730 --> 00:47:11,380
如果一定要
1106
00:47:11,660 --> 00:47:14,772
把它分割成若干个组件的话
1107
00:47:14,772 --> 00:47:15,550
怎么分
1108
00:47:15,850 --> 00:47:17,000
依据是什么
1109
00:47:18,800 --> 00:47:22,230
状态机可以提供一个参考依据
1110
00:47:22,860 --> 00:47:23,860
就是说
1111
00:47:24,510 --> 00:47:29,770
尽可能维护我们的状态机的完整性
1112
00:47:30,340 --> 00:47:32,110
如果说,我们
1113
00:47:32,920 --> 00:47:34,488
光有类图的话
1114
00:47:34,488 --> 00:47:37,036
怎么分也可以看得出来一些
1115
00:47:37,036 --> 00:47:38,800
类和类之间哪些
1116
00:47:39,730 --> 00:47:42,599
离得比较远的
1117
00:47:42,599 --> 00:47:44,751
哪些经常一起合作的
1118
00:47:44,751 --> 00:47:45,110
对吧
1119
00:47:45,390 --> 00:47:46,480
那我们可以说
1120
00:47:48,120 --> 00:47:51,034
把有可能经常一起合作的类
1121
00:47:51,034 --> 00:47:52,491
打包成组件嘛
1122
00:47:52,491 --> 00:47:55,405
实际上,可以看出来,你画序列图
1123
00:47:55,405 --> 00:47:56,030
画什么
1124
00:47:56,310 --> 00:47:56,541
1125
00:47:56,541 --> 00:47:57,700
可以看出来
1126
00:47:58,220 --> 00:47:59,972
但是又回头讲了
1127
00:47:59,972 --> 00:48:01,724
你画序列图怎么画
1128
00:48:01,724 --> 00:48:04,060
你的责任分配怎么分配合理
1129
00:48:04,840 --> 00:48:05,047
不还是
1130
00:48:05,047 --> 00:48:10,225
得回到刚才讲的状态机那个依据里面来嘛
1131
00:48:10,225 --> 00:48:10,640
对吧
1132
00:48:10,640 --> 00:48:12,090
如果你要寻找
1133
00:48:12,370 --> 00:48:14,451
更可靠的更充分的依据的话
1134
00:48:14,451 --> 00:48:16,360
还是回到状态这个来
1135
00:48:20,980 --> 00:48:23,381
那怎么划分比较合理
1136
00:48:23,381 --> 00:48:26,050
如果说我们画了状态机
1137
00:48:28,660 --> 00:48:32,100
那首先,如果这种分割
1138
00:48:32,380 --> 00:48:35,030
对维护这个状态的完整性
1139
00:48:35,370 --> 00:48:36,230
是
1140
00:48:36,510 --> 00:48:37,410
有害的
1141
00:48:38,130 --> 00:48:40,810
那么这个分割可能就是不合理的
1142
00:48:41,290 --> 00:48:44,920
如果是对维护状态机完整性是有帮助的
1143
00:48:45,960 --> 00:48:46,148
1144
00:48:46,148 --> 00:48:48,217
尽可能维护完整性的话
1145
00:48:48,217 --> 00:48:49,910
那么这个分割是可以
1146
00:48:50,320 --> 00:48:51,340
考虑的
1147
00:48:56,130 --> 00:48:57,770
当然这里状态机
1148
00:48:57,770 --> 00:49:00,323
如果说每个都要维护的话
1149
00:49:00,323 --> 00:49:01,052
可能很难
1150
00:49:01,052 --> 00:49:03,240
但是我们至少可以维护什么
1151
00:49:04,050 --> 00:49:08,638
我们系统里面那些比较复杂,有复杂状态的那些类
1152
00:49:08,638 --> 00:49:09,264
对不对
1153
00:49:09,264 --> 00:49:11,975
那往往是我们系统的核心类了
1154
00:49:11,975 --> 00:49:12,392
对吧
1155
00:49:12,392 --> 00:49:14,061
如果这些能够维护
1156
00:49:14,061 --> 00:49:15,730
那说明这个分割
1157
00:49:17,030 --> 00:49:19,290
就不算差的,对吧
1158
00:49:22,610 --> 00:49:24,160
那第二个就是
1159
00:49:24,440 --> 00:49:26,000
状态机的话
1160
00:49:26,790 --> 00:49:29,430
我们有一个分区这样的概念
1161
00:49:31,480 --> 00:49:34,141
我们通过分区的状态
1162
00:49:34,141 --> 00:49:35,620
从不同维度
1163
00:49:36,810 --> 00:49:39,200
来把系统的一些属性的
1164
00:49:41,100 --> 00:49:42,150
组合
1165
00:49:42,430 --> 00:49:42,660
1166
00:49:42,660 --> 00:49:43,810
进一步分割
1167
00:49:44,570 --> 00:49:46,730
让它们相对来说比较独立
1168
00:49:49,790 --> 00:49:51,680
有时是彻底独立
1169
00:49:52,050 --> 00:49:53,726
彻底独立就是什么意思
1170
00:49:53,726 --> 00:49:54,230
就是说
1171
00:49:56,670 --> 00:50:01,080
这个分区跟这个分区完全没有瓜葛的
1172
00:50:01,080 --> 00:50:02,340
但是这个很难
1173
00:50:02,620 --> 00:50:04,010
往往会有瓜葛
1174
00:50:04,790 --> 00:50:05,809
那瓜葛的话
1175
00:50:05,809 --> 00:50:07,440
往往会通过什么
1176
00:50:07,840 --> 00:50:09,090
警戒条件
1177
00:50:10,950 --> 00:50:12,040
来沟通
1178
00:50:13,010 --> 00:50:14,360
比如说,这边
1179
00:50:14,980 --> 00:50:16,230
有状态A
1180
00:50:17,020 --> 00:50:17,880
1181
00:50:18,490 --> 00:50:19,400
到B
1182
00:50:20,030 --> 00:50:22,140
那A到B是不是可以呢
1183
00:50:22,140 --> 00:50:22,610
可能
1184
00:50:23,720 --> 00:50:25,880
要判断下面这个
1185
00:50:26,630 --> 00:50:27,549
下面的状态
1186
00:50:27,549 --> 00:50:28,835
当前状态是什么
1187
00:50:28,835 --> 00:50:30,490
下面这个状态是什么
1188
00:50:34,700 --> 00:50:36,880
才能够决定A能不能到B
1189
00:50:37,840 --> 00:50:38,900
它通过
1190
00:50:39,180 --> 00:50:43,480
把这个状态作为上面的一个警戒条件
1191
00:50:46,490 --> 00:50:48,098
这样的话,两个分区
1192
00:50:48,098 --> 00:50:50,510
通过这个沟通
1193
00:50:51,670 --> 00:50:53,590
那同样,也可以判断
1194
00:50:53,910 --> 00:50:56,760
怎样的分区是不合理的
1195
00:50:57,140 --> 00:50:58,551
一样的
1196
00:50:58,551 --> 00:50:59,610
如果说
1197
00:51:01,590 --> 00:51:04,650
一个分区要用到另外一个分区的
1198
00:51:05,490 --> 00:51:06,900
很多的(表达有误:应该是很多次用到)
1199
00:51:07,180 --> 00:51:08,280
状态
1200
00:51:09,970 --> 00:51:11,210
来做判断
1201
00:51:13,040 --> 00:51:15,965
那显然这个分割就不合理了
1202
00:51:15,965 --> 00:51:19,100
应该它们之间的瓜葛越少越好的
1203
00:51:20,110 --> 00:51:21,330
尽可能少
1204
00:51:23,930 --> 00:51:27,720
那这个也可以提供一个分割系统的参考证据
1205
00:51:28,100 --> 00:51:29,630
这样我们就可以把
1206
00:51:30,660 --> 00:51:33,900
构成状态空间的这个属性组合
1207
00:51:34,320 --> 00:51:37,379
这个,这个就可以分开
1208
00:51:37,379 --> 00:51:37,850
对吧
1209
00:51:39,030 --> 00:51:40,270
就像人一样
1210
00:51:40,960 --> 00:51:43,720
人有很多很多很多的属性
1211
00:51:44,120 --> 00:51:45,150
有身高、体重
1212
00:51:45,150 --> 00:51:48,240
有存款多少等等等等
1213
00:51:49,750 --> 00:51:51,020
但我们可以
1214
00:51:51,590 --> 00:51:55,811
把它分成几个区嘛,一个高矮
1215
00:51:55,811 --> 00:51:58,907
这是说身高的,有那个贫富
1216
00:51:58,907 --> 00:51:59,470
对吧
1217
00:52:00,510 --> 00:52:02,000
有美丑
1218
00:52:02,280 --> 00:52:04,915
那可能就会有独立的
1219
00:52:04,915 --> 00:52:05,969
有高富帅
1220
00:52:05,969 --> 00:52:06,760
有那个
1221
00:52:07,040 --> 00:52:07,640
高穷帅
1222
00:52:07,640 --> 00:52:09,640
都可以
1223
00:52:11,610 --> 00:52:12,890
那我们可以把
1224
00:52:13,170 --> 00:52:14,590
人的这个
1225
00:52:14,900 --> 00:52:16,370
财富的部分
1226
00:52:16,700 --> 00:52:17,937
分割出去
1227
00:52:17,937 --> 00:52:20,826
这是个财富的一个组件
1228
00:52:20,826 --> 00:52:21,032
1229
00:52:21,032 --> 00:52:22,683
它们是独立演化的
1230
00:52:22,683 --> 00:52:24,540
里面的逻辑是独立的
1231
00:52:25,070 --> 00:52:25,948
然后呢
1232
00:52:25,948 --> 00:52:27,120
这个
1233
00:52:27,760 --> 00:52:31,040
身体这部分,独立的,这样
1234
00:52:32,130 --> 00:52:32,514
当然
1235
00:52:32,514 --> 00:52:34,626
它们也未必是完全独立的
1236
00:52:34,626 --> 00:52:35,010
没准
1237
00:52:35,630 --> 00:52:37,490
财富的演化
1238
00:52:37,770 --> 00:52:40,946
它可能要依赖身体里面某些状态
1239
00:52:40,946 --> 00:52:41,400
对吧
1240
00:52:42,050 --> 00:52:44,010
那这时候可以通过
1241
00:52:46,590 --> 00:52:48,600
警戒条件来沟通
1242
00:52:49,050 --> 00:52:50,200
但我们
1243
00:52:50,530 --> 00:52:53,310
一个区的,比如,财富区的逻辑
1244
00:52:54,140 --> 00:52:56,149
要转换的时候
1245
00:52:56,149 --> 00:52:58,410
我们判断一下,当前在
1246
00:52:58,690 --> 00:53:00,850
身体条件这个区里面
1247
00:53:01,130 --> 00:53:02,370
当前的状态是什么
1248
00:53:03,000 --> 00:53:03,207
1249
00:53:03,207 --> 00:53:05,070
作为警戒条件来判断
1250
00:53:05,880 --> 00:53:07,774
如果当前状态是健康的
1251
00:53:07,774 --> 00:53:10,047
那么这个财富的逻辑是这样
1252
00:53:10,047 --> 00:53:12,131
如果当前的状态是生病的
1253
00:53:12,131 --> 00:53:14,215
那财富逻辑可能是这样
1254
00:53:14,215 --> 00:53:15,920
这个也是可以的
1255
00:53:16,620 --> 00:53:17,450
1256
00:53:17,760 --> 00:53:19,949
少量的沟通是没问题的
1257
00:53:19,949 --> 00:53:21,342
如果是大量沟通
1258
00:53:21,342 --> 00:53:23,531
那就说明切割不合理嘛
1259
00:53:23,531 --> 00:53:23,930
对吧
1260
00:53:24,210 --> 00:53:25,330
刚才讲过了
1261
00:53:26,740 --> 00:53:28,490
那这个是更
1262
00:53:28,930 --> 00:53:31,044
充分的一些证据
1263
00:53:31,044 --> 00:53:32,630
需要去思考的
1264
00:53:33,880 --> 00:53:34,950
建模的
1265
00:53:35,230 --> 00:53:36,760
而我们现在很多
1266
00:53:37,040 --> 00:53:39,880
划分系统的,分割系统的这种
1267
00:53:40,160 --> 00:53:41,060
逻辑
1268
00:53:41,340 --> 00:53:43,182
或者说,根本就没有逻辑
1269
00:53:43,182 --> 00:53:45,843
你去看很多写领域驱动设计的文章
1270
00:53:45,843 --> 00:53:47,481
它说,我要分上下文
1271
00:53:47,481 --> 00:53:48,300
怎么分呢
1272
00:53:48,920 --> 00:53:49,860
没了
1273
00:53:50,380 --> 00:53:50,613
1274
00:53:50,613 --> 00:53:51,779
它就直接说
1275
00:53:51,779 --> 00:53:56,210
比如我们某某系统可以分割成这么些上下文
1276
00:53:58,140 --> 00:53:58,352
1277
00:53:58,352 --> 00:54:00,050
就给出一个图
1278
00:54:00,900 --> 00:54:01,084
1279
00:54:01,084 --> 00:54:01,820
实际上
1280
00:54:01,820 --> 00:54:03,660
都是废话来着
1281
00:54:04,570 --> 00:54:05,397
那怎么废话
1282
00:54:05,397 --> 00:54:06,887
我们在这个书里面
1283
00:54:06,887 --> 00:54:10,530
还有之前的课程里面说了很多,这种批量刷废话
1284
00:54:10,810 --> 00:54:11,751
没有道理
1285
00:54:11,751 --> 00:54:12,458
对不对
1286
00:54:12,458 --> 00:54:15,048
你凭什么说这样分呢
1287
00:54:15,048 --> 00:54:15,990
没有道理
1288
00:54:17,580 --> 00:54:18,071
所以
1289
00:54:18,071 --> 00:54:19,790
这种根本对
1290
00:54:20,070 --> 00:54:21,202
里面的结构
1291
00:54:21,202 --> 00:54:24,148
里面的逻辑都没有任何的认识情况下
1292
00:54:24,148 --> 00:54:29,133
就拍脑袋乱分,这种相当于什么,剁肉了
1293
00:54:29,133 --> 00:54:30,040
不是解剖
1294
00:54:30,560 --> 00:54:32,003
解剖是什么
1295
00:54:32,003 --> 00:54:32,870
你了解
1296
00:54:33,510 --> 00:54:34,960
人体结构
1297
00:54:36,910 --> 00:54:39,059
这个人躺在床上
1298
00:54:39,059 --> 00:54:39,980
病床上
1299
00:54:40,450 --> 00:54:41,440
你了解
1300
00:54:42,170 --> 00:54:45,656
皮肤下面血管的分布什么样子
1301
00:54:45,656 --> 00:54:45,906
1302
00:54:45,906 --> 00:54:47,898
神经是怎么分布的
1303
00:54:47,898 --> 00:54:49,642
里面的肌肉组织
1304
00:54:49,642 --> 00:54:52,132
什么样子的,骨头在哪里
1305
00:54:52,132 --> 00:54:52,880
1306
00:54:53,360 --> 00:54:54,858
通过之前的检查
1307
00:54:54,858 --> 00:54:56,570
包括你之前的学习
1308
00:54:56,850 --> 00:54:58,012
都已经知道了
1309
00:54:58,012 --> 00:55:00,530
所以你下刀的时候怎么下刀
1310
00:55:00,870 --> 00:55:04,180
手术刀割哪里,都是有讲究的
1311
00:55:04,640 --> 00:55:04,839
1312
00:55:04,839 --> 00:55:06,236
不能说你割进去
1313
00:55:06,236 --> 00:55:08,432
一刀把血管给切断了
1314
00:55:08,432 --> 00:55:09,031
不行的
1315
00:55:09,031 --> 00:55:10,229
你只能割皮肤
1316
00:55:10,229 --> 00:55:12,824
皮肤进去可能是脂肪
1317
00:55:12,824 --> 00:55:15,020
下去就是肌肉什么之类的
1318
00:55:15,020 --> 00:55:15,419
可以
1319
00:55:15,419 --> 00:55:16,417
你一刀进去
1320
00:55:16,417 --> 00:55:17,615
把动脉给切了
1321
00:55:17,615 --> 00:55:19,811
那你是杀人还是救人
1322
00:55:19,811 --> 00:55:20,410
对不对
1323
00:55:20,700 --> 00:55:22,700
但我们很多人经常是这样的
1324
00:55:23,540 --> 00:55:24,880
他连类图
1325
00:55:25,640 --> 00:55:27,620
状态机图都不会画
1326
00:55:30,640 --> 00:55:31,977
画出来都是错的
1327
00:55:31,977 --> 00:55:33,315
还大言不惭
1328
00:55:33,315 --> 00:55:34,876
说怎么样怎么样
1329
00:55:34,876 --> 00:55:36,214
分解系统
1330
00:55:36,214 --> 00:55:36,660
那就是
1331
00:55:36,940 --> 00:55:37,836
无耻了
1332
00:55:37,836 --> 00:55:39,630
这东西根本就是
1333
00:55:39,920 --> 00:55:41,421
根本不了解人体结构
1334
00:55:41,421 --> 00:55:43,090
就说我能帮你开刀
1335
00:55:43,090 --> 00:55:45,260
那不是解剖是剁肉了
1336
00:55:47,200 --> 00:55:49,684
但因为这样的一些言论
1337
00:55:49,684 --> 00:55:51,040
它不用动脑子
1338
00:55:51,820 --> 00:55:52,071
1339
00:55:52,071 --> 00:55:53,830
它比较简单易学
1340
00:55:54,270 --> 00:55:56,690
很多这种懒惰的人
1341
00:55:57,260 --> 00:55:59,320
经常会受到蛊惑
1342
00:55:59,770 --> 00:55:59,983
1343
00:55:59,983 --> 00:56:01,905
去学这种简单的思维
1344
00:56:01,905 --> 00:56:03,400
拍脑袋的思维
1345
00:56:04,650 --> 00:56:06,310
那这种我们需要
1346
00:56:06,790 --> 00:56:08,870
认清这个问题所在