[图解]实现领域驱动设计译文暴露的问题04

0
00:00:00,960 --> 00:00:03,020
今天我们继续说一下

1
00:00:03,460 --> 00:00:05,350
实现领域驱动设计

2
00:00:05,630 --> 00:00:08,120
译文里面暴露的问题

3
00:00:10,630 --> 00:00:14,740
前面三个视频,我们提到了第①句

4
00:00:15,550 --> 00:00:16,900
存在的问题

5
00:00:17,220 --> 00:00:21,360
以及背后可能的思想根源

6
00:00:21,720 --> 00:00:22,770
那我们

7
00:00:23,330 --> 00:00:25,420
今天开始来看第②句

8
00:00:31,200 --> 00:00:31,456


9
00:00:31,456 --> 00:00:33,250
第②句原文这个

10
00:00:34,080 --> 00:00:34,354


11
00:00:34,354 --> 00:00:36,820
中译本译文这个

12
00:00:38,760 --> 00:00:41,260
首先,第一个问题

13
00:00:45,780 --> 00:00:47,940
并不存在遍历

14
00:00:50,970 --> 00:00:51,770
你看

15
00:00:54,090 --> 00:00:55,820
原文是这样

16
00:00:57,090 --> 00:00:58,173
译文是这样

17
00:00:58,173 --> 00:00:59,690
那我们来看一下

18
00:01:02,950 --> 00:01:03,459
原文

19
00:01:03,459 --> 00:01:06,770
它用词只用了navigate

20
00:01:07,050 --> 00:01:07,410


21
00:01:07,410 --> 00:01:09,210
意思是导航

22
00:01:11,330 --> 00:01:12,992
它并没有用遍历

23
00:01:12,992 --> 00:01:14,655
如果它用遍历的话

24
00:01:14,655 --> 00:01:16,110
它应该用的什么

25
00:01:16,390 --> 00:01:19,370
traversal或者traverse

26
00:01:19,950 --> 00:01:21,710
类似这样的词

27
00:01:22,220 --> 00:01:23,730
意思是遍历

28
00:01:25,020 --> 00:01:29,447
遍历在计算机科学的特定场景里面

29
00:01:29,447 --> 00:01:31,010
它的意思就是

30
00:01:31,290 --> 00:01:33,780
访问所有的结点

31
00:01:37,140 --> 00:01:38,180
但是

32
00:01:39,210 --> 00:01:40,500
我们要知道

33
00:01:41,710 --> 00:01:44,400
在一个整体-部分结构的

34
00:01:45,010 --> 00:01:46,080
这样一个

35
00:01:46,410 --> 00:01:47,420
里面

36
00:01:47,970 --> 00:01:51,030
整体对象要履行责任的时候

37
00:01:51,570 --> 00:01:54,830
它并不需要遍历所有的部件

38
00:01:56,760 --> 00:01:57,970
也就是说

39
00:01:59,370 --> 00:02:00,830
一个对象

40
00:02:01,110 --> 00:02:03,320
在执行某个行为的时候

41
00:02:04,470 --> 00:02:06,330
并不一定涉及(当然,也可以涉及)

42
00:02:07,710 --> 00:02:10,650
所有直接或间接的

43
00:02:11,620 --> 00:02:13,040
部分对象

44
00:02:17,220 --> 00:02:19,380
比如说,这是类图

45
00:02:19,890 --> 00:02:21,790
A组合B

46
00:02:22,070 --> 00:02:25,200
B组合DE,A组合C

47
00:02:26,310 --> 00:02:28,780
对象图我们画出来是这样

48
00:02:29,060 --> 00:02:31,200
A对象,a1

49
00:02:31,480 --> 00:02:31,749


50
00:02:31,749 --> 00:02:34,173
组合了一个b1、b2

51
00:02:34,173 --> 00:02:35,790
这两个都是B

52
00:02:36,070 --> 00:02:39,800
还组合两个C,也就是,a里面有两个b两个c

53
00:02:40,150 --> 00:02:44,061
b里面它自己也有自己内部结构了

54
00:02:44,061 --> 00:02:44,550


55
00:02:45,520 --> 00:02:47,030
那当a

56
00:02:48,520 --> 00:02:50,200
执行某个操作

57
00:02:51,120 --> 00:02:53,160
或者说,它收到某个消息

58
00:02:55,010 --> 00:02:57,080
要执行某个操作的时候

59
00:02:57,380 --> 00:02:59,933
可能只会影响到

60
00:02:59,933 --> 00:03:00,630
只会把

61
00:03:00,930 --> 00:03:04,620
这个操作分解分配发给它的

62
00:03:05,910 --> 00:03:07,816
下面的某个部件

63
00:03:07,816 --> 00:03:09,450
比如说,发给b1

64
00:03:11,180 --> 00:03:11,364


65
00:03:11,364 --> 00:03:13,210
b2可能就不会发给它

66
00:03:14,990 --> 00:03:16,706
同时可能发给c1

67
00:03:16,706 --> 00:03:18,208
c2可能不会发

68
00:03:18,208 --> 00:03:19,710
也可能只发给b

69
00:03:19,990 --> 00:03:21,383
c都不会发

70
00:03:21,383 --> 00:03:22,080
对不对

71
00:03:23,230 --> 00:03:27,730
就像我们订单里面有很多属性嘛

72
00:03:27,730 --> 00:03:29,700
有若干个订单项

73
00:03:29,700 --> 00:03:31,950
还有下单日期

74
00:03:31,950 --> 00:03:36,170
还有其他的一些

75
00:03:36,450 --> 00:03:38,460
包括配送地址什么之类的

76
00:03:39,120 --> 00:03:41,691
那很可能它现在收到一个消息说

77
00:03:41,691 --> 00:03:42,680
我要修改

78
00:03:43,500 --> 00:03:43,774


79
00:03:43,774 --> 00:03:44,870
某个地址

80
00:03:46,050 --> 00:03:49,050
那可能影响的是地址这个属性而已

81
00:03:50,110 --> 00:03:53,131
其他的不影响,下单日期,不影响

82
00:03:53,131 --> 00:03:53,664
对不对

83
00:03:53,664 --> 00:03:55,619
或者说,我删除某个订单项

84
00:03:55,619 --> 00:03:57,930
我从订单里面删除某个订单项

85
00:03:57,930 --> 00:03:59,885
那只是影响到那个订单项

86
00:03:59,885 --> 00:04:01,840
其他订单项不受影响

87
00:04:02,130 --> 00:04:03,658
怎么可能要遍历呢

88
00:04:03,658 --> 00:04:05,187
不可能遍历的嘛

89
00:04:05,187 --> 00:04:05,570
对吧

90
00:04:08,590 --> 00:04:10,730
或者我们举最简单的例子

91
00:04:11,010 --> 00:04:13,085
类和属性,就知道了嘛

92
00:04:13,085 --> 00:04:15,160
一个类有很多个属性

93
00:04:15,620 --> 00:04:17,070
很多个操作

94
00:04:17,070 --> 00:04:18,520
那某个操作

95
00:04:19,340 --> 00:04:22,160
可能涉及到的只是其中

96
00:04:24,220 --> 00:04:25,695
某些属性

97
00:04:25,695 --> 00:04:29,067
这个操作可能涉及到的,可能是这里面

98
00:04:29,067 --> 00:04:29,910
某些属性

99
00:04:30,190 --> 00:04:30,393


100
00:04:30,393 --> 00:04:32,017
也可能是重叠的

101
00:04:32,017 --> 00:04:32,830
它不会说

102
00:04:33,250 --> 00:04:34,618
执行一个操作

103
00:04:34,618 --> 00:04:36,670
所有的属性都要访问

104
00:04:36,950 --> 00:04:38,450
或者说都要修改

105
00:04:39,150 --> 00:04:40,300
那不会的了

106
00:04:40,300 --> 00:04:40,990
对不对

107
00:04:42,110 --> 00:04:42,367


108
00:04:42,367 --> 00:04:44,940
所以呢,这个不是英文的

109
00:04:45,220 --> 00:04:48,530
翻译的问题,是我们在概念上

110
00:04:48,810 --> 00:04:50,260
就没有搞清楚

111
00:04:51,030 --> 00:04:51,216


112
00:04:51,216 --> 00:04:53,081
不存在遍历的问题

113
00:04:53,081 --> 00:04:55,880
跟我们前面讲那个关联是一样的

114
00:04:56,400 --> 00:04:58,426
不是说,我英语不好

115
00:04:58,426 --> 00:04:59,552
用词用错了

116
00:04:59,552 --> 00:05:01,128
不是这个意思

117
00:05:01,128 --> 00:05:03,154
当然也有这方面因素

118
00:05:03,154 --> 00:05:03,830
但是呢

119
00:05:04,460 --> 00:05:06,280
关键点不在这里

120
00:05:07,230 --> 00:05:08,340
这是第(1)点

121
00:05:10,330 --> 00:05:11,330
第(2)点

122
00:05:11,950 --> 00:05:13,862
那我们再往外推

123
00:05:13,862 --> 00:05:15,350
你看,它说什么

124
00:05:20,310 --> 00:05:23,240
深度地递归遍历

125
00:05:23,530 --> 00:05:25,930
首先深度地,这是有的

126
00:05:26,220 --> 00:05:28,310
遍历是没有的,是导航

127
00:05:28,590 --> 00:05:29,220
对吧

128
00:05:29,500 --> 00:05:33,520
但这个递归是译者自己加上去的

129
00:05:35,570 --> 00:05:39,490
那为什么有这样的一个翻译

130
00:05:39,770 --> 00:05:42,350
背后可能会有什么样的

131
00:05:44,000 --> 00:05:45,278
思想的根源

132
00:05:45,278 --> 00:05:47,580
这个我们下次再说

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/623843.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法提升之赛事推荐】蓝桥杯没拿奖?你还有这个比赛的羊毛可以薅

目录 蓝桥算法双周赛-赛事介绍([官方连接](https://www.lanqiao.cn/oj-contest/))赛事奖励赛事概览快速上手划重点!1. 赛题解析及答疑2. 排行榜3. 基础体验 注意事项 蓝桥算法双周赛-赛事介绍(官方连接) 为了激励同学们…

Django自定义封装Response

Django自定义封装Response 目录 Django自定义封装Response定义Response类视图层示例 定义Response类 # utils/common_response.py from rest_framework.response import Response# 继承DRF的Response并重写__init__ class APIResponse(Response):def __init__(self, code100, …

排序-计数排序(Counting Sort)

计数排序(Counting Sort)是一种非比较排序算法,特别适用于一定范围内的整数排序。它的核心思想是统计每个值的出现次数,然后根据这些计数将每个元素放到其正确的位置上。计数排序的时间复杂度为O(nk),其中n是数组长度&…

ChatGPT4o免费体验?OpenAI 又在深夜放大招了!

👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 目录 一、GPT4o是什么?二、官网…

LeetCode2215找出两数组的不同

题目描述 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中:answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组…

正念冥想训练内容有哪些?流静冥想

正念冥想训练内容有哪些? “我做不到感恩,总觉得满世界都是欠我的。”同学A这样说。看得出来她的无奈、无力以及无头绪感。 “我无法对父母做出感恩的祝福,从他们那里我感受不到爱,感受不到关怀,体验不到感恩。”同学…

【Java】IDEA自动生成类图和时序图

【Java】IDEA自动生成类图和时序图 idea 的强大之处在于此,它包含了很多小插件,我们不需要再次下载相关插件,只需要在idea中小小的设置一下就可以了,下面是设置方法,我用的是idea2020版本 打开设置File -> Settings->Diagr…

vue3 中 使用 antd中的select 组件的带搜索框 展开后可对选项进行筛选搜索功能

鼠标进入以后下拉显示&#xff1a; 输入字符串以后&#xff1a; 可以看出对数据进行了筛选。 具体代码&#xff1a; 结构上&#xff1a;<a-selectv-model:value"formState.formFlow"show-searchallowClearplaceholder"输入选择流程":options"op…

React Native 之 开发环境搭建(一)

1. 安装Node.js&#xff1a; Node.js是React Native开发的基础&#xff0c;因此首先需要安装Node.js。强烈建议始终选择 Node 当前的 LTS &#xff08;长期维护&#xff09;版本&#xff0c;一般是偶数版本&#xff0c;不要选择偏实验性质的奇数版本。 如果你希望更方便地管理…

【数据结构】数组循环队列的实现

队列&#xff08;Queue&#xff09;是一种特殊的线性数据结构&#xff0c;它遵循FIFO&#xff08;First In First Out&#xff0c;先入先出&#xff09;的原则。队列只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#…

C++11 线程池:轻量级高并发解决方案

C11 线程池&#xff1a;轻量级高并发解决方案 线程池&#xff08;Thread Pool&#xff09;是一种线程管理的机制&#xff0c;它包含了多个预先创建的线程&#xff0c;用于执行多个任务&#xff0c;这些任务被放入任务队列中等待执行。 满足我们的生产者和消费者模型。 线程…

java面试题:判断字符串包含字母、数字、空格、符号的数量

在Java中&#xff0c;你可以使用正则表达式来检查字符串中包含多少个字母、数字、空格和符号。也可以使用基础api来实现业务逻辑&#xff0c;方法如下&#xff1a; 1 使用Character类的静态方法 以下代码定义了一个countCharacters方法&#xff0c;它遍历字符串中的每个字符&a…

戒烟网站|基于SSM+vue的戒烟网站系统的设计与实现(源码+数据库+文档)

戒烟网站 目录 基于SSM&#xff0b;vue的戒烟网站系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1网站功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主…

REACT 在组件之间共享状态

有时&#xff0c;您希望两个组件的状态始终一起变化。要做到这一点&#xff0c;请从他们俩身上删除状态&#xff0c;将其移动到他们最近的共同父级&#xff0c;然后通过道具将其传递给他们。这被称为提升状态&#xff0c;这是编写 React 代码时最常见的事情之一。 举例提升状态…

从ROS到数据库:用Python将ROS话题消息保存到数据库

观前提醒&#xff1a;本博客介绍如何使用Python订阅ROS话题,并将接收到的消息保存到SQL数据库中,包括MySQL和SQL Server两种情况。 使用Python订阅ROS话题并将消息保存至MySQL数据库 下面我们将详细介绍如何使用Python订阅ROS话题&#xff0c;并将接收的数据保存到MySQL数据库…

Postman基础功能-Collection集合和批量运行

一、Collection&#xff08;集合&#xff09;介绍 当我们对一个或多个系统中的很多接口用例进行维护时&#xff0c;首先想到的就是对接口用例进行分类管理&#xff0c;同时还希望对这批接口用例做回归测试。 在 Postman 中也提供了这样一个功能&#xff0c;就是 Collec…

【网站项目】SpringBoot781乐乐农产品销售系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

上官婉儿传奇的一生(戴罪之身入宫,却深得两任君主重用)

她最初的身份是罪臣之女、官婢&#xff0c;历经三代帝王更迭&#xff0c;她顶着后妃的头衔&#xff0c;成为武则天和李显的内阁大总管&#xff0c;她是如何赢得两位帝王的信任&#xff1f; 01从官婢到女官的逆袭 公元664年&#xff0c;上官婉儿出生在唐高宗时代&#xff0c;她…

免费无限换脸 - 最强AI换脸Facefusion整合包最新版来啦!

今天我要分享的是FaceFusion最新版&#xff0c;它最近更新到了2.5.3版本&#xff0c;带来了许多激动人心的改进和优化。 Facefusion2.5.3版本介绍 FaceFusion不仅仅是一款换脸软件&#xff0c;它更是一个多功能的数字人和实时直播助手&#xff0c;真正开启了个性化媒体的新时代…

tomcat 的启动流程

tomcat 的启动流程 中 使用的Lifecycle 生命流程 。在这里还使用了设计模式中的模板模式&#xff08;LifecycleBase 是一个模板类&#xff09; init&#xff08;&#xff09;方法 start() 方法 container 的处理