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

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

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

相关文章

selenium添加代理(有账号密码)

以下为各种尝试的记录,正确实现可直接参考最后一条! 1,导入Proxy库来添加capabilities属性:可以访问网站,但ip还是本机ip from selenium import webdriver from selenium.webdriver.chrome.options import Options f…

C语言: 字符串函数(下)

片头 在上一篇中,我们介绍了字符串函数。在这一篇章中,我们将继续学习字符串函数,准备好了吗?开始咯! 1.strncpy函数 1.1 strncpy函数的用法 strncpy是C语言中的一个字符串处理函数,它用于将一个字符串的一部分内容…

uniapp区分app、h5、小程序

APP端 标签内 <!-- #ifdef APP-PLUS --><view> APP端 </view> <!-- #endif --> JSCSS内 /*#ifdef APP-PLUS*/console.log(APP端) /*#endif*/ H5端 标签内 <!-- #ifdef H5 --><view> H5端 </view> <!-- #endif --> JSC…

18篇文章带你深入浅出了解亚组交互作用(p for Interaction)及可视化分析

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技&#xff0c;几乎在高分的SCI中必出现&#xff0c;因为把人群分为亚组后再进行统计可以增强文章结果的可靠性&#xff0c;进行可视化后可以清晰的表明变量之间的关系。不仅如此&#xff0c;交互作用还可以使用来进…

HTML5学习记录

简介 超文本标记语言&#xff08;HyperText Markup Language&#xff0c;简称HTML&#xff09;&#xff0c;是一种用于创建网页的标准标记语言。 编辑器 下载传送门https://code.visualstudio.com/ 下载编辑器插件 标题 标题通过 <h1> - <h6> 标签进行定义。 …

【C++学习】C++11新特性(第一节)

文章目录 ♫一.文章前言♫二.C11新特性♫一.统一的列表初始化♫二.std::initializer_list♫三.声明♫四.decltype关键字♫五.nullptr♫六.新增加容器---静态数组array、forward_list以及unordered系列♫6.1unordered_map与unoredered_set♫6.2array♫6.3 forward_list&#xff…

深度学习体系结构——CNN, RNN, GAN, Transformers, Encoder-Decoder Architectures算法原理与应用

1. 卷积神经网络 卷积神经网络&#xff08;CNN&#xff09;是一种特别适用于处理具有网格结构的数据&#xff0c;如图像和视频的人工神经网络。可以将其视作一个由多层过滤器构成的系统&#xff0c;这些过滤器能够处理图像并从中提取出有助于进行预测的有意义特征。 设想你手…

计算机组成原理【CO】Ch2 数据的表示和应用

文章目录 大纲2.1 数制与编码2.2 运算方法和运算电路2.3 浮点数的表示和运算 【※】带标志加法器OFSFZFCF计算机怎么区分有符号数无符号数? 【※】存储排列和数据类型转换数据类型大小数据类型转换 进位计数制进制转换2的次幂 各种码的基本特性无符号整数的表示和运算带符号整…

(我的创作纪念日)[MySQL]数据库原理7——喵喵期末不挂科

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;大大会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

50+ Midjourney 美食相关提示词,看了别流口水哦

Midjourney 是一个无限的创意宝藏。通过对提示词的精挑细选&#xff0c;我们就可以从这个宝藏里面挖掘无数的美食创意。有些效果令人惊叹&#xff0c;甚至无法在现实世界中复刻。本文不只是罗列 50 多个提示词&#xff0c;而是对它们进行分门别类&#xff0c;并附上图片。相信你…

ELK、ELKF企业级日志分析系统介绍

前言 随着企业级应用系统日益复杂&#xff0c;随之产生的海量日志数据。传统的日志管理和分析手段&#xff0c;难以做到高效检索、实时监控以及深度挖掘潜在价值。在此背景下&#xff0c;ELK日志分析系统应运而生。"Elastic" 是指 Elastic 公司所提供的一系列与搜索…

C++(3) —— 核心编程

一、内存区分模型 1.1 程序运行前 #include<iostream> using namespace std;// 全局变量 int g_a 10; int g_b 20;// const修饰的全局变量&#xff0c;全局常量 const int c_g_a 10; const int c_g_b 20;int main() {// 全局区// 全局变量、静态变量、常量// 创建普通…

采集某新闻网资讯网站保存PDF

网址&#xff1a;融资总额近3亿美元、药明康德押注&#xff0c;这家抗衰老明星公司有何过人之处-36氪 想要抓取文章内容&#xff0c;但是找不到啊&#xff0c;可能是文字格式的问题&#xff0c;也可能文章内容进行了加密。 在元素中查看&#xff0c;window.initialState返回的就…

【Unity+Python】如何通过Socket进行通信

1、Unity端创建名为UnityClient.cs脚本代码(客户端)&#xff1a; 注意&#xff1a;unity的规则中类&#xff0c;名和脚本文件名需要相同。 using System.Net.Sockets; using System.Text; using UnityEngine;public class UnityClient : MonoBehaviour {TcpClient client;Netw…

CSS核心样式-02-盒模型属性及扩展应用

目录 三、盒模型属性 常见盒模型区域 盒模型图 盒模型五大属性 1. 宽度 width 2. 高度 height 3. 内边距 padding 四值法 三值法 二值法 单值法 案例 4. 边框 border 按照属性值的类型划分为三个单一属性 ①线宽 border-width ②线型 border-style ③边框颜色 bo…

软考高级架构师:随机函数模型

一、AI 讲解 随机函数模型是理解各种随机过程和算法的一个重要概念&#xff0c;在软件工程、算法设计以及系统分析中有着广泛的应用。简而言之&#xff0c;随机函数模型是一种用于描述具有随机性的系统或过程的数学模型&#xff0c;它能够帮助我们预测和分析在不确定性下的系统…

基于java+springboot+vue实现的智能停车计费系统(文末源码+Lw+ppt)23-30

摘 要 随着人们生活水平的高速发展&#xff0c;智能停车计费信息管理方面在近年来呈直线上升&#xff0c;人们也了解到智能停车计费的实用性&#xff0c;因此智能停车计费的管理也逐年递增&#xff0c;智能停车计费信息的增加加大了在管理上的工作难度。为了能更好的维护智能…

MySQL基础入门上篇

MySQL基础 介绍 mysql -uroot -p -h127.0.0.1 -P3306项目设计 具备数据库一定的设计能力和操作数据的能力。 数据库设计DDL 定义 操作 显示所有数据库 show databases;创建数据库 create database db02;数据库名唯一&#xff0c;不能重复。 查询是否创建成功 加入一些…

学习基于pytorch的VGG图像分类 day5

注&#xff1a;本系列博客在于汇总CSDN的精华帖&#xff0c;类似自用笔记&#xff0c;不做学习交流&#xff0c;方便以后的复习回顾&#xff0c;博文中的引用都注明出处&#xff0c;并点赞收藏原博主. 目录 VGG的数据集处理 1.数据的分类 2.对数据集的处理 VGG的分类标签设置 …

spring boot集成logback到mysql 8

spring boot集成logback到mysql 8 依赖数据库准备创建log日志用户&#xff0c;并创建数据库执行建表sql 配置文件bugbug 1&#xff1a;Failed to instantiate type ch.qos.logback.classic.db.DBAppenderbug信息&#xff1a;解决&#xff1a; bug2: DBAppender cannot function…