[图解]企业应用架构模式2024新译本讲解11-领域模型4

1
00:00:00,160 --> 00:00:01,870
好,到这里的话

2
00:00:02,620 --> 00:00:05,060
文字处理器的产品对象就生成了

3
00:00:06,880 --> 00:00:09,180
同样下面就是电子表格

4
00:00:10,490 --> 00:00:11,480
电子表格也同样的

5
00:00:11,490 --> 00:00:15,290
它调用了一个New电子表格的

6
00:00:15,300 --> 00:00:20,080
这样一个操作,在这里

7
00:00:22,770 --> 00:00:29,340
这里面,你看,它这时候进来的策略

8
00:00:31,170 --> 00:00:33,900
它创建就需要一个参数了

9
00:00:33,990 --> 00:00:37,900
就是刚才讲的,第一个偏移时间段

10
00:00:37,910 --> 00:00:39,380
相当于

11
00:00:39,390 --> 00:00:43,990
第二次入账

12
00:00:44,000 --> 00:00:47,620
第三次入账是隔多少天以后

13
00:00:49,700 --> 00:00:52,260
以这个作为参数来创建一个产品对象

14
00:00:57,220 --> 00:00:59,010
这里,你看它就跳转到了

15
00:00:59,020 --> 00:01:02,180
这个三段式的收入确认策略

16
00:01:02,470 --> 00:01:03,540
这个类里面来

17
00:01:04,370 --> 00:01:10,060
这个地方,刚才我们在这个地方的时候

18
00:01:10,750 --> 00:01:15,550
是没有跳转的

19
00:01:15,560 --> 00:01:21,020
这个地方,你看,根本就没有

20
00:01:21,030 --> 00:01:24,060
这里面构造器都没写

21
00:01:24,510 --> 00:01:26,460
它只是写了一个这个方法

22
00:01:26,470 --> 00:01:30,260
New,有一个就完了,默认的构造

23
00:01:30,670 --> 00:01:31,530
这样一个对象

24
00:01:31,540 --> 00:01:33,560
这样一个类型的对象就完了

25
00:01:34,110 --> 00:01:35,160
构造器也没什么内容

26
00:01:37,020 --> 00:01:37,570
而三段式这个

27
00:01:40,510 --> 00:01:41,700
我把这个关掉

28
00:01:44,880 --> 00:01:52,730
三段式这个里面是有内容的

29
00:01:53,360 --> 00:01:55,010
这个地方

30
00:01:55,460 --> 00:01:58,210
所以你看,在构造这个的时候

31
00:01:59,220 --> 00:02:02,280
它这里要有一个赋值的过程

32
00:02:02,820 --> 00:02:06,190
因为刚才一次性的它没有什么值

33
00:02:06,320 --> 00:02:14,080
你看它类图上那个类,类图上

34
00:02:16,110 --> 00:02:17,940
这个地方

35
00:02:20,230 --> 00:02:21,420
这地方就没有

36
00:02:21,590 --> 00:02:24,720
这里是有的,这里有两个属性

37
00:02:26,570 --> 00:02:31,380
所以这里要有一个赋值的过程

38
00:02:33,330 --> 00:02:35,160
把这两个值赋给它

39
00:02:38,100 --> 00:02:38,950
然后就完了

40
00:02:42,310 --> 00:02:44,220
下面数据库这个也是一样的

41
00:02:44,230 --> 00:02:46,900
数据库跟表格也是三段式的

42
00:02:46,910 --> 00:02:47,420
一样的

43
00:02:48,550 --> 00:02:50,260
只不过段的时间不一样

44
00:02:50,460 --> 00:02:52,920
60天,90天,这是30天,60天

45
00:02:57,860 --> 00:02:58,270

46
00:02:59,520 --> 00:03:01,760
这个对象就创建出来了

47
00:03:04,750 --> 00:03:07,140
这个产品对象,还有合同对象

48
00:03:08,830 --> 00:03:13,480
合同对象,你看,创建一份合同,参数

49
00:03:17,230 --> 00:03:19,570
一个产品

50
00:03:20,000 --> 00:03:21,230
然后下面是金额

51
00:03:21,790 --> 00:03:23,100
然后这是时间

52
00:03:23,680 --> 00:03:26,060
产品,买了多少钱

53
00:03:26,400 --> 00:03:27,690
付了多少钱

54
00:03:28,110 --> 00:03:29,200
买了什么产品

55
00:03:29,680 --> 00:03:31,880
买了多少钱,付了多少钱

56
00:03:33,230 --> 00:03:37,450
那么这个钱,就是把这个钱

57
00:03:37,770 --> 00:03:38,970
变成Money了

58
00:03:41,030 --> 00:03:43,550
然后这个是把这个变成一个时间

59
00:03:48,910 --> 00:03:53,030
然后合同这里,你看,合同这里,合同的属性

60
00:03:54,160 --> 00:03:55,680
它有一个收入确认的集合

61
00:03:55,890 --> 00:04:03,980
你看我们这个合同,这是1,这是多

62
00:04:04,890 --> 00:04:08,750
所以1对多,就有一个,或者看这里也可以

63
00:04:13,740 --> 00:04:17,060
这里,一对多,有个集合

64
00:04:18,770 --> 00:04:21,680
集合我们就用List来表示

65
00:04:22,220 --> 00:04:23,390
有这样一个列表

66
00:04:26,560 --> 00:04:28,840
然后你看,它有关联到产品

67
00:04:29,360 --> 00:04:29,750


68
00:04:32,630 --> 00:04:36,490
然后这里还定义了一个金额

69
00:04:36,500 --> 00:04:38,370
类型是用Money

70
00:04:38,580 --> 00:04:39,610
事务脚本

71
00:04:39,620 --> 00:04:42,580
这个地方用过

72
00:04:42,590 --> 00:04:46,900
然后签约时间,类型是日期时间

73
00:04:47,280 --> 00:04:51,270
这两个跟前面事务脚本(口误),表模块一样的了

74
00:04:51,280 --> 00:04:56,370
就是说,标识在这里,也由这个类揽起来

75
00:04:56,460 --> 00:04:57,770
包括锁什么这种

76
00:04:58,460 --> 00:05:00,600
我们前面也讲了,实际上不用管这个

77
00:05:01,020 --> 00:05:06,420
应该把它交给另外的部分

78
00:05:12,270 --> 00:05:15,310
这是构造器,实际上就是赋值了

79
00:05:15,320 --> 00:05:21,290
产品,赋值到产品,收入

80
00:05:21,300 --> 00:05:23,050
签约时间

81
00:05:23,520 --> 00:05:25,370
然后这个一样,ID

82
00:05:25,380 --> 00:05:26,570
跟前面一样的

83
00:05:26,580 --> 00:05:28,670
生成一个新标识,怎么生成的

84
00:05:29,040 --> 00:05:32,540
一样的,加锁

85
00:05:33,160 --> 00:05:35,150
然后保证线程安全

86
00:05:35,400 --> 00:05:42,260
++,下面也是一样的

87
00:05:42,590 --> 00:05:43,420
都一样的

88
00:05:44,000 --> 00:05:48,410
这个就不重复了

1
00:00:00,990 --> 00:00:03,380
接下来,这个有了,这个有了

2
00:00:03,390 --> 00:00:05,840
我们就开始计算收入确认了

3
00:00:09,000 --> 00:00:12,060
操作首先是分配到合同这里来的

4
00:00:12,070 --> 00:00:15,340
让合同来计算它的收入确认

5
00:00:16,790 --> 00:00:20,750
我们来看合同怎么算

6
00:00:25,220 --> 00:00:25,800
往下走

7
00:00:29,090 --> 00:00:31,110
合同怎么算

8
00:00:31,120 --> 00:00:33,770
你看,它这里,在这里

9
00:00:33,900 --> 00:00:35,330
你看,它先委托

10
00:00:35,340 --> 00:00:38,640
给它关联到的产品

11
00:00:39,140 --> 00:00:40,200
委托给产品

12
00:00:43,090 --> 00:00:46,350
合同,这个地方,委托给产品

13
00:00:48,940 --> 00:00:50,920
把自己作为参数

14
00:00:53,330 --> 00:00:54,800
然后就跳到产品了

15
00:00:57,260 --> 00:01:02,230
产品这里,同样也有一个

16
00:01:02,240 --> 00:01:04,310
计算收入确认的操作

17
00:01:05,840 --> 00:01:06,840
参数是合同

18
00:01:08,980 --> 00:01:12,070
它又委托给它所绑定的一个策略

19
00:01:12,080 --> 00:01:13,180
对不对

20
00:01:15,020 --> 00:01:17,520
把这合同也同样作为参数传过去

21
00:01:19,260 --> 00:01:28,890
真正干活的是这个,它绑定的策略

22
00:01:28,900 --> 00:01:29,850
实际上是一个

23
00:01:31,070 --> 00:01:34,870
文字处理器绑定的是一个一次性的策略

24
00:01:35,250 --> 00:01:35,510


25
00:01:36,990 --> 00:01:38,320
所以这个里面很简单

26
00:01:38,330 --> 00:01:42,920
你看,合同给你

27
00:01:42,930 --> 00:01:45,520
相当于直接给合同

28
00:01:45,960 --> 00:01:48,070
添加一个收入确认

29
00:01:49,950 --> 00:01:51,940
把收入确认添加到合同上面

30
00:01:52,660 --> 00:01:54,940
金额就是合同收入金额

31
00:01:56,590 --> 00:01:58,180
时间就是签约时间

32
00:01:58,190 --> 00:02:00,340
相当于把它搬家

33
00:02:01,100 --> 00:02:05,500
从合同那个地方搬到收入确认那个地方

34
00:02:06,410 --> 00:02:08,760
我们前面讲了,这本身是冗余的

35
00:02:08,770 --> 00:02:10,400
它是可以计算出来的

36
00:02:10,490 --> 00:02:13,500
没有必要多一个冗余的计算结果

37
00:02:13,510 --> 00:02:15,560
你需要的时候再算就行了

38
00:02:16,100 --> 00:02:18,420
但是我们这里案例,我们前面也讲了,案例的话

39
00:02:18,430 --> 00:02:20,450
先按照书上这么讲

40
00:02:21,050 --> 00:02:27,030
但这个是没有必要的,添加

41
00:02:27,040 --> 00:02:28,230
你看,又跳到合同

42
00:02:28,240 --> 00:02:29,670
跳回到合同这里来了

43
00:02:30,930 --> 00:02:32,640
反复地跳

44
00:02:32,650 --> 00:02:38,940
合同跳到产品,产品到策略

45
00:02:39,280 --> 00:02:44,500
策略又跳回到合同来

46
00:02:44,510 --> 00:02:45,740
又跳回合同来

47
00:02:46,210 --> 00:02:51,700
合同,它有一个获取收入的操作

48
00:02:51,870 --> 00:02:55,260
实际上就是getter

49
00:02:55,390 --> 00:02:56,540
获取时间

50
00:02:56,670 --> 00:02:59,850
就是get set,一个包装

51
00:03:02,290 --> 00:03:02,520
当然

52
00:03:02,530 --> 00:03:07,540
如果我们用property之类的

53
00:03:07,550 --> 00:03:08,620
就不用,直接点

54
00:03:08,790 --> 00:03:14,070
直接把名称就变成一个方法了

55
00:03:15,520 --> 00:03:19,110
就代替了get,set这样的

56
00:03:27,060 --> 00:03:29,300
收入确认,创建收入确认对象

57
00:03:29,740 --> 00:03:31,190
又跳到收入确认这里来

58
00:03:31,200 --> 00:03:32,470
创建一个对象

59
00:03:34,460 --> 00:03:37,670
也就是说,创建一个收入确认

60
00:03:37,680 --> 00:03:44,820
以合同金额和签约时间为参数

61
00:03:45,030 --> 00:03:46,060
创建一个收入对象

62
00:03:46,070 --> 00:03:49,210
创建一个收入确认对象

63
00:03:49,220 --> 00:03:52,840
然后把它加入到合同的(收入确认)列表里面

64
00:03:57,190 --> 00:03:57,900
怎么加

65
00:03:58,270 --> 00:04:01,160
首先你看,这是一个列表

66
00:04:01,170 --> 00:04:05,190
这是我们刚才,一个列表

67
00:04:05,200 --> 00:04:10,350
在这个列表里面添加

68
00:04:10,360 --> 00:04:11,310
把它添加进去

69
00:04:12,680 --> 00:04:15,270
把刚刚生成的收入确认添加进去

70
00:04:15,630 --> 00:04:15,930


71
00:04:22,710 --> 00:04:26,620
又回来,一层一层又回来

72
00:04:27,820 --> 00:04:28,930
这个就结束了

73
00:04:30,660 --> 00:04:32,380
这个合同的计算,这个很简单

74
00:04:32,390 --> 00:04:34,250
因为它就一次性

75
00:04:34,690 --> 00:04:35,550
下面更复杂一点

76
00:04:35,560 --> 00:04:38,490
分三段的这种,电子表格的

77
00:04:40,350 --> 00:04:42,180
也同样,委托给产品

78
00:04:43,510 --> 00:04:43,960
一样的

79
00:04:45,050 --> 00:04:46,410
委托给策略,这一样的

80
00:04:46,420 --> 00:04:50,830
但这个策略跟刚才那个策略不一样了

81
00:04:50,840 --> 00:04:51,670
这个策略是什么

82
00:04:51,680 --> 00:04:53,650
你看,它是三段的

83
00:04:53,660 --> 00:04:56,480
你看,这里,三段的策略

84
00:04:56,960 --> 00:05:00,260
所以它就跳到三段式的策略这里来

85
00:05:02,140 --> 00:05:06,180
我们看三段式策略这个类,它继承这个,一样的

86
00:05:07,460 --> 00:05:10,770
3段这个数字3也是硬编码来着

87
00:05:11,390 --> 00:05:12,330
4段不行吗

88
00:05:12,340 --> 00:05:13,170
5段不行吗

89
00:05:13,180 --> 00:05:13,610
对不对

90
00:05:14,490 --> 00:05:18,090
所以这种的话,都是不好的,应该是什么

91
00:05:19,560 --> 00:05:20,870
进一步提取出概念

92
00:05:21,590 --> 00:05:27,970
段数,偏移,一共几段

93
00:05:28,670 --> 00:05:31,490
各段的偏移,提炼出概念

94
00:05:31,500 --> 00:05:33,920
不要写三,这是硬编码了

95
00:05:34,130 --> 00:05:36,270


96
00:05:41,790 --> 00:05:45,470
下面你看,这里定义了一些偏移

97
00:05:46,300 --> 00:05:48,650
第一个时间偏移,第二个偏移

98
00:05:49,050 --> 00:05:51,340
几天以后搞一笔

99
00:05:51,350 --> 00:05:52,540
几天以后再搞一笔

100
00:05:53,790 --> 00:05:54,780
这个才是什么

101
00:05:54,790 --> 00:05:56,060
真正要建模的概念

102
00:05:56,230 --> 00:05:57,220
偏移的概念

103
00:05:57,230 --> 00:06:02,120
而不是说具体时间,不是这个,偏移的概念

104
00:06:07,020 --> 00:06:08,280
这才是本质的概念

105
00:06:08,800 --> 00:06:10,050
这是它的属性,我们看

106
00:06:10,480 --> 00:06:12,070
刚才它的计算

107
00:06:12,750 --> 00:06:13,350
计算

108
00:06:14,500 --> 00:06:15,680
收入确认

109
00:06:17,020 --> 00:06:18,800
同样,我们前面事务脚本

110
00:06:18,810 --> 00:06:21,560
包括表模块也展示过了,分三份

111
00:06:21,770 --> 00:06:24,680
Allocate,分三份

112
00:06:29,370 --> 00:06:32,550
收入把它分三份

113
00:06:34,230 --> 00:06:35,780
一样的,分三份

114
00:06:35,790 --> 00:06:37,020
然后这一样的

115
00:06:37,630 --> 00:06:38,850
然后跟刚才一样了

116
00:06:40,070 --> 00:06:41,910
然后分好了,金额有了

117
00:06:42,000 --> 00:06:43,510
然后,时间,一样的

118
00:06:43,520 --> 00:06:44,390
金额在这里

119
00:06:45,680 --> 00:06:48,720
金额把它放到这里来

120
00:06:48,730 --> 00:06:52,050
第一份,第二份,第三份,然后加进来

121
00:06:52,300 --> 00:06:54,640
后面就跟刚才一样的

122
00:06:58,000 --> 00:07:07,460
给合同添加收入确认,都一样的

123
00:07:07,470 --> 00:07:10,690
这些刚才都已经演示过了

124
00:07:18,920 --> 00:07:21,400
回来,下面一样的,我们就不多说了

125
00:07:21,730 --> 00:07:22,760
我们来看,到这里

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

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

相关文章

html+CSS+js部分基础运用18

1. 按键修饰符的应用。①姓名:按下回车键时调用方法输出“姓名-密码”;②密码:按下shift回车时调用方法输出“姓名密码” 图1 初始效果图 图2 按键修饰符效果图 2. 仿淘宝Tab栏切换,熟悉…

MySQL使用

登录目标数据库 mysql -u root -p123456或指定编码格式登录 mysql -uroot -p密码 --default-character-setutf8 --socketmysql.sock -Amysql > select version();//查看版本号 show databases;//查看数据库有哪些 use xxx; show tables; show create database practice; …

对待谷歌百度等搜索引擎的正确方式

对待百度、谷歌等搜索引擎的方式是,你要站在搜索引擎之上,保持自己的独立思想和意见。 当谷歌宣布他们将会根据一个名为“Alphabet”的新控股公司来进行业务调整时,在科技界引起了一片恐慌之声。 永远不要说这是一个公司一直在做的事情。不…

攻防世界---misc---What-is-this

1、下载附件,是一个.gz的文件夹,是linux系统的压缩包后缀 2、在kali中解压,解压之后得到两张图片 3、想把图片拖在物理机中分析,但是拖不了,所以将.gz文件在物理机中改为.zip,解压之后看到了一个没有后缀的…

TensorFlow2.x基础与mnist手写数字识别示例

文章目录 Github官网文档Playground安装声明张量常量变量 张量计算张量数据类型转换张量数据维度转换ReLU 函数Softmax 函数卷积神经网络训练模型测试模型数据集保存目录显示每层网络的结果 TensorFlow 是一个开源的深度学习框架,由 Google Brain 团队开发和维护。它…

负反馈放大电路

开环放大倍数:放大电路没有加反馈时的放大倍数A 闭环放大倍数:电路加了反馈信号的放大倍数Af。反馈信号和输出信号的比值称为反馈系数F。 三极管各极电压变化关系 1,三极管的基极和发射极之间是同相关系,当基极电压上升&#x…

CTFHUB-SQL注入-字符型注入

目录 查询数据库名 查询数据库中的表名 查询表中数据 总结 此题目和上一题相似,一个是整数型注入,一个是字符型注入。字符型注入就是注入字符串参数,判断回显是否存在注入漏洞。因为上一题使用手工注入查看题目 flag ,这里就不…

rk3568 norflash+pcei nvme 配置

文章目录 rk3568 norflashpcei nvme 配置1,添加parameter_nor.txt文件2 修改编译规则3 修改uboot4 修改BoardConfig.mk5 修改kernel pcei配置6 编译7 烧录 rk3568 norflashpcei nvme 配置 1,添加parameter_nor.txt文件 device/rockchip/rk356x/rk3568_…

【面试干货】 Hash 索引和 B+树索引的区别

【面试干货】 Hash 索引和 B树索引的区别 1、Hash 索引2、B 树索引3、区别和适用场景 💖The Begin💖点点关注,收藏不迷路💖 在数据库中,索引是一种重要的数据结构,用于加速查询操作。常见的索引包括 Hash 索…

【C++题解】1265. 爱因斯坦的数学题

问题:1265. 爱因斯坦的数学题 类型:简单循环 题目描述: 爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨 2 阶,则最最后剩一阶,若每步跨 3 阶,则最后剩 2 阶,若每…

PyTorch学习5:Logistic回归

文章目录 前言一、分类问题简介二、示例1.示例步骤2.示例代码 总结 前言 介绍利用PyTorch实现Logistic回归的分类问题 一、分类问题简介 分类问题的输出为属于每一个类别的概率,概率值最大的即为所属类别。最常见的Sigmoid函数:Logistic函数。 二、示…

机器学习--回归模型和分类模型常用损失函数总结(详细)

文章目录 引言 回归模型常用损失函数均方误差(Mean Squared Error, MSE)均方根误差(Root Mean Squared Error, RMSE)平均绝对误差(Mean Absolute Error, MAE)Huber损失(Huber Loss) …

ChatTTS 文字生成语言本地模型部署

ChatTTS部署 官方信息 [ChatTTS首页](https://chattts.com/)搭建步骤 1、下载源码 git clone https://github.com/2noise/ChatTTS.git 2、按照环境 pip install torch ChatTTS pip install -r requirements.txt 3、下载模型 git clone https://www.modelscope.cn/pzc163/ch…

CGS与MGS的矩阵正交化-C语言实现

格拉姆-施密特正交化和改进的格拉姆-施密特正交化 格拉姆-施密特正交化CGS 数学公式 代码实现: 过程版 矩阵运算实现的难点在于每次运算都是一个向量,需要for循环进行,会带来运算时在代码中的复杂,进而难以理解代码的过程 Q矩阵…

使用汇编和proteus实现仿真数码管显示电路

proteus介绍: proteus是一个十分便捷的用于电路仿真的软件,可以用于实现电路的设计、仿真、调试等。并且可以在对应的代码编辑区域,使用代码实现电路功能的仿真。 汇编语言介绍: 百度百科介绍如下: 汇编语言是培养…

uC-OS-III多任务程序

目录 一、STM32CubeMX基于HAL库建立工程 1、配置RCC 2、配置SYS 3、配置GPIO输出口 4、串口配置 5、系统时钟频率配置 二、uC/OS-III下载 三、文件移植 1、uC-BSP文件夹中添加文件 2、uC-CONFIG文件夹中添加文件 3、HAL工程的MDK-ARM文件夹设置 4、uC-CPU文件夹设置…

深度学习 - 梯度下降优化方法

梯度下降的基本概念 梯度下降(Gradient Descent)是一种用于优化机器学习模型参数的算法,其目的是最小化损失函数,从而提高模型的预测精度。梯度下降的核心思想是通过迭代地调整参数,沿着损失函数下降的方向前进&#…

ssm605基于SSM的游戏商城的设计与实现+jsp【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源: 👩‍💻 SpringBoot…

【c语言】qsort函数及泛型冒泡排序的模拟实现

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:C语言 目录 一、qsort函数 1.回调函数 2.qsort函数 3.void* 指针 二、泛型冒泡排序的模拟实现 1.比较函数的编写 2.交换函数的编写 3.冒泡排序的编写 4…

ssm617基于协同过滤技术的网上书城的开发与研究+jsp【已测试】

前言:👩‍💻 计算机行业的同仁们,大家好!作为专注于Java领域多年的开发者,我非常理解实践案例的重要性。以下是一些我认为有助于提升你们技能的资源: 👩‍💻 SpringBoot…