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

0
00:00:00,740 --> 00:00:02,200
那刚才讲了

1
00:00:02,480 --> 00:00:04,211
Evans这个隐喻

2
00:00:04,211 --> 00:00:06,520
实际上背后是把集合

3
00:00:06,800 --> 00:00:08,560
当成了聚合

4
00:00:10,580 --> 00:00:14,350
那为什么有这样的一个隐喻,根源在哪里

5
00:00:14,710 --> 00:00:16,960
根源可能是来自于

6
00:00:17,570 --> 00:00:20,790
Aggregate这个词

7
00:00:21,310 --> 00:00:23,860
之前是用在哪里

8
00:00:25,540 --> 00:00:25,815


9
00:00:25,815 --> 00:00:27,470
之前是用在

10
00:00:27,750 --> 00:00:29,570
统计上面

11
00:00:29,570 --> 00:00:31,693
比如说,Excel里面

12
00:00:31,693 --> 00:00:33,513
SQL里面

13
00:00:33,513 --> 00:00:35,030
SQL语句里面

14
00:00:36,320 --> 00:00:37,840
它就有Aggregate

15
00:00:38,120 --> 00:00:38,955
的函数

16
00:00:38,955 --> 00:00:39,790
比如说

17
00:00:40,070 --> 00:00:40,393


18
00:00:40,393 --> 00:00:42,656
算总量,算平均值

19
00:00:42,656 --> 00:00:43,950
算最大值

20
00:00:43,950 --> 00:00:45,890
你看,都是什么

21
00:00:45,890 --> 00:00:48,800
很多一模一样的一个

22
00:00:49,340 --> 00:00:50,370
东西

23
00:00:50,740 --> 00:00:53,140
同一个类的不同对象

24
00:00:53,140 --> 00:00:53,673
对吧

25
00:00:53,673 --> 00:00:54,740
比如说,有

26
00:00:55,710 --> 00:00:56,135
一万个人

27
00:00:56,135 --> 00:00:58,260
你看,一万个都是人

28
00:00:58,960 --> 00:00:59,760
对吧

29
00:01:00,330 --> 00:01:04,280
然后我要算大家的平均身高多少

30
00:01:04,950 --> 00:01:05,620


31
00:01:06,380 --> 00:01:09,025
其中最高的多少

32
00:01:09,025 --> 00:01:11,935
最低是多少,最矮是多少

33
00:01:11,935 --> 00:01:14,845
你看,它是一个集合的概念

34
00:01:14,845 --> 00:01:15,110

35
00:01:15,390 --> 00:01:19,380
同一个类的很多很多很多对象来做一个统计

36
00:01:19,660 --> 00:01:20,730
的计算

37
00:01:21,200 --> 00:01:21,512


38
00:01:21,512 --> 00:01:22,450
所以呢

39
00:01:23,220 --> 00:01:24,910
就会导致什么

40
00:01:25,550 --> 00:01:26,720
产生了

41
00:01:27,390 --> 00:01:29,310
这样的一个错觉

42
00:01:29,590 --> 00:01:32,160
把集合当成了聚合

43
00:01:34,170 --> 00:01:37,480
所以呢,为了避免这样的错觉

44
00:01:37,760 --> 00:01:37,978


45
00:01:37,978 --> 00:01:40,820
我的推荐,就是不用这个词

46
00:01:42,350 --> 00:01:43,867
那就不用这个词

47
00:01:43,867 --> 00:01:45,132
只用哪一个

48
00:01:45,132 --> 00:01:46,903
只用这个Composition

49
00:01:46,903 --> 00:01:49,180
组合这个就行了

50
00:01:50,060 --> 00:01:53,413
一个是要用这个组合这个词表示

51
00:01:53,413 --> 00:01:54,880
它是来自不同方的

52
00:01:55,160 --> 00:01:58,250
一个组合

53
00:01:58,530 --> 00:01:59,590
类似这样

54
00:02:00,200 --> 00:02:03,490
而不是简单的一个集合这样聚集起来

55
00:02:07,180 --> 00:02:07,475


56
00:02:07,475 --> 00:02:08,360
像这个

57
00:02:16,590 --> 00:02:17,248
第二个

58
00:02:17,248 --> 00:02:18,565
我们只用这个

59
00:02:18,565 --> 00:02:20,540
我们把焦点放在什么

60
00:02:21,350 --> 00:02:22,820
放在这个

61
00:02:23,100 --> 00:02:24,275
之前也说了

62
00:02:24,275 --> 00:02:25,920
放在这个边上

63
00:02:25,920 --> 00:02:27,330
放在关系上

64
00:02:27,610 --> 00:02:28,190


65
00:02:28,650 --> 00:02:32,730
不需要用这种对应的这个

66
00:02:33,010 --> 00:02:34,350
这个词

67
00:02:36,740 --> 00:02:36,925


68
00:02:36,925 --> 00:02:38,590
这个我们就不要

69
00:02:41,220 --> 00:02:42,920
把这个改成

70
00:02:43,470 --> 00:02:45,280
用这个就行了

71
00:02:49,400 --> 00:02:50,890
那刚才的

72
00:02:52,430 --> 00:02:55,532
画面里面,我们可以看到有一个不变式

73
00:02:55,532 --> 00:02:55,920


74
00:02:56,200 --> 00:02:56,398


75
00:02:56,398 --> 00:02:57,590
有一个不变式

76
00:02:58,330 --> 00:02:58,611


77
00:02:58,611 --> 00:03:00,020
像这个早餐

78
00:03:00,740 --> 00:03:01,950
这个

79
00:03:02,340 --> 00:03:04,340
这个不变式意味着什么

80
00:03:04,650 --> 00:03:06,860
任何一个早餐对象

81
00:03:07,370 --> 00:03:08,830
它的属性值

82
00:03:09,260 --> 00:03:11,570
必须满足这样的一个约束

83
00:03:11,570 --> 00:03:11,990
对吧

84
00:03:15,710 --> 00:03:17,530
那这个不变式的话

85
00:03:17,850 --> 00:03:20,210
计算机科学里面早就有了

86
00:03:21,100 --> 00:03:24,660
那什么时候应用到面向对象领域

87
00:03:25,000 --> 00:03:27,392
最早什么时候,查的话

88
00:03:27,392 --> 00:03:27,610


89
00:03:28,050 --> 00:03:30,184
没有办法考证

90
00:03:30,184 --> 00:03:30,540

91
00:03:30,950 --> 00:03:34,120
至少,你看1988年的这个书

92
00:03:34,450 --> 00:03:35,030


93
00:03:36,030 --> 00:03:37,410
Meyer这个书

94
00:03:37,690 --> 00:03:39,080
这里已经有了

95
00:03:39,360 --> 00:03:42,947
已经有了专门的类的不变式的内容

96
00:03:42,947 --> 00:03:43,580
对不对

97
00:03:45,370 --> 00:03:47,242
所以呢,它不是

98
00:03:47,242 --> 00:03:49,489
领域驱动设计的发明什么之类的

99
00:03:49,489 --> 00:03:52,860
不要把那个东西塞装到那里面去

100
00:03:56,780 --> 00:04:00,120
那我们再来看一个葡萄隐喻的小问题

101
00:04:02,390 --> 00:04:05,320
为什么Evans用了一个葡萄

102
00:04:06,010 --> 00:04:06,384


103
00:04:06,384 --> 00:04:07,880
作为这个

104
00:04:08,170 --> 00:04:09,380
Aggregate

105
00:04:11,990 --> 00:04:14,270
这样的一个隐喻

106
00:04:15,950 --> 00:04:17,190
那很可能

107
00:04:17,570 --> 00:04:20,300
背后的问题是这个

0
00:00:01,230 --> 00:00:02,860
在植物学里面

1
00:00:03,880 --> 00:00:06,080
有一个聚合果的概念

2
00:00:09,350 --> 00:00:12,600
有可能,Evans是看到有这么一个词

3
00:00:13,150 --> 00:00:16,670
然后他以为这个葡萄是聚合果

4
00:00:17,020 --> 00:00:19,370
所以呢,就把葡萄给放上去了

5
00:00:21,250 --> 00:00:22,561
但实际上

6
00:00:22,561 --> 00:00:24,200
葡萄是单果

7
00:00:24,830 --> 00:00:26,380
不是聚合果

8
00:00:27,080 --> 00:00:27,487
当然

9
00:00:27,487 --> 00:00:29,730
这是属于植物学的问题

10
00:00:30,890 --> 00:00:33,180
不是软件开发的问题

0
00:00:00,220 --> 00:00:02,940
下一个我们要说的问题是

1
00:00:03,220 --> 00:00:05,720
一簇相关联的对象

2
00:00:06,110 --> 00:00:08,530
这样的说法实际上是不恰当的

3
00:00:09,200 --> 00:00:10,461
那为什么呢

4
00:00:10,461 --> 00:00:13,490
这个我们下一个视频再说了

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony实战开发-如何使用AKI轻松实现跨语言调用。

介绍 针对JS与C/C跨语言访问场景,NAPI使用比较繁琐。而AKI提供了极简语法糖使用方式,一行代码完成JS与C/C的无障碍跨语言互调,使用方便。本示例将介绍使用AKI编写C跨线程调用JS函数场景。通过调用C全局函数,创建子线程来调用JS函…

GIS 数据格式转换

1、在线工具 mapshaper 2、数据上传 3、数据格式转换 导入数据可导出为多种格式:Shapefile、Json、GeoJson、CSV、TopJSON、KML、SVG

APP广告变现项目

APP广告变现项目 很多人觉得不可能,这是肯定存在的,不是现在才有的一个项目,这个项目的原理是怎么样呢,就是通过某些特定的app,然后看完广告就有收益,基本单次的观看单价都是在几毛到1块之间。 养机养好的…

阿里云服务器带宽多少钱?公网带宽收费标准全解析

阿里云服务器的公网带宽计费模式分为“按固定带宽”和“按使用流量”,有什么区别?按固定带宽是指直接购买多少M带宽,比如1M、5M、10M、100M等,阿里云直接分配用户所购买的带宽值,根据带宽大小先付费再使用;…

一套3种风格经典的wordpress免费主题模板

wordpress免费企业主题 https://www.wpniu.com/themes/39.html 免费wordpress企业模板 https://www.wpniu.com/themes/43.html 免费wordpress企业主题 https://www.wpniu.com/themes/44.html

波奇学Linux:ip协议

ip报头是c语言的结构体 报头和有效载荷如何分离? 固定长度四位首部长度 4位版本号就是IPV4 8位服务类型:4位TOS位段和位保留字段 4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本 给路由器提…

【JAVA基础篇教学】第十六篇:Java连接和操作MySQL数据库

博主打算从0-1讲解下java基础教学,今天教学第十六篇:Java连接和操作MySQL数据库。 我将提供一个简单的示例代码,涵盖数据库连接、查询、插入和更新等操作。 一、下载MySQL驱动包 1.下载地址:MySQL :: Download Connector/J 2.解…

Navicat for MySQL 使用基础与 SQL 语言的DDL

一、目的: Navicat for MySQL 是一套专为 MySQL 设计的高性能数据库管理及开发 工具。它可以用于任何版本 3.21 或以上的 MySQL 数据库服务器,并支持大 部份 MySQL 最新版本的功能,包括触发器、存储过程、函数、事件、视图、 管理用户等。…

VMware配置CentOS 7 并实现ssh连接

Vmware 17下载地址 ***永久许可证:***5Y012-8HL8P-0J8U0-032Q6-93KKF CentOS 7 下载地址 一、配置CentOS 如下 创建新的虚拟机,选择典型,点击下一步 选择上述下载镜像存储位置,选择镜像,点击下一步 3.填写相关信息…

微信小程序wx.getLocation 真机调试不出现隐私弹窗

在小程序的开发过程中,首页中包含要获取用户地理位置的功能,所以在这里的onLoad()中调用了wx.getLocation(),模拟调试时一切正常,但到了真机环境中就隐私框就不再弹出,并且出现了报错&#xff0…

智能生活新体验:小米香薰加湿器技术解码

在现代家居生活中,科技与舒适性日益交织,智能家居产品成为提升生活品质的重要工具。小米香薰加湿器作为一款集科技与生活美学于一体的产品,其独特的设计和多功能性受到了广泛欢迎。今天,我们就来详细拆解这款融合了科技与香薰元素…

Sony Camera Remote SDK在Windows上的使用

Sony官方提供了相机遥控软件开发包,允许用户自行开发应用软件,实现对相机的远程控制,包括拍摄、监看和文件传输等。截至目前最新的版本是2024.4.12发布的1.12.00版本,下载链接如下:Camera Remote SDK | LICENSE AGREEM…

初学python记录:力扣706. 设计哈希映射

题目: 不使用任何内建的哈希表库设计一个哈希映射(HashMap)。 实现 MyHashMap 类: MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中&#x…

SpringCloud之LoadBalancer自定义负载均衡算法,基于nacos权重

LoadBalancer基于Nacos权重自定义负载算法 ReactorLoadBalancer接口&#xff0c;实现自定义负载算法需要实现该接口&#xff0c;并实现choose逻辑&#xff0c;选取对应的节点 public interface ReactorLoadBalancer<T> extends ReactiveLoadBalancer<T> {Mono<…

VMware Workstation部署最新版OpenWrt 23.05.3

正文共&#xff1a;1456 字 51 图&#xff0c;预估阅读时间&#xff1a;2 分钟 我们之前介绍了如何在VMware Workstation上安装OpenWrt&#xff08;软路由是啥&#xff1f;OpenWrt又是啥&#xff1f;长啥样&#xff1f;在VMware装一个瞅瞅&#xff09;&#xff0c;也介绍了如何…

【计算机毕业设计】物流管理系统设计与实现——后附源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

ubuntu16.04安装Eclipse C/C++

1.安装 JDK 官网源码安装 首先打开JDK官网&#xff0c;JDK1.8的下载网址为&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/#java8-windows&#xff0c;进入到网址如下图所示&#xff1a; 向下滑动到 JDK1.8的下载界面&#xff0c;如下图所示&#xff1a…

3_2Linux中内核级加强型火墙的管理

### 一.Selinux的功能 ### 观察现象 ①当Selinux未开启时 在/mnt中建立文件被移动到/var/ftp下可以被vsftpd服务访问 匿名用户可以通过设置后上传文件 当使用ls -Z /var/ftp查看文件时显示"?" ps auxZ | grep vsftpd 时显示&#xff1a; - root 8546 0.0 0.0 26952 …

四.音视频编辑-音频混合-概述

引言 当我们在前两篇博客中成功地构建了一个媒体组合&#xff0c;并且略过了音频部分时&#xff0c;我们意识到了我们需要对这个项目进行更详细的探讨。在本篇博客中&#xff0c;我们将会展示如何创建一个包含视频轨道、配音音频轨道以及背景音频轨道的完整媒体组合。更进一步…

Antd:在文本框中展示格式化JSON

要想将对象转换为格式化 JSON 展示在文本框中&#xff0c;需要用到 JSON.stringify JSON.stringify 方法接受三个参数&#xff1a; value&#xff1a;必需&#xff0c;一个 JavaScript 值&#xff08;通常为对象或数组&#xff09;要转换为 JSON 字符串。replacer&#xff1a…