[图解]企业应用架构模式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
我们来看,到这里

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

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

相关文章

用python编撰一个电脑清理程序

自制一个电脑清理程序,有啥用呢?在电脑不装有清理软件的时候,可以解决自己电脑内存不足的情况。 1、设想需要删除指定文件夹中的临时文件和缓存文件。以下是代码。 import os import shutil def clean_folder(folder_path): for root,…

11 IP协议 - IP协议头部

什么是 IP 协议 IP(Internet Protocol)是一种网络通信协议,它是互联网的核心协议之一,负责在计算机网络中路由数据包,使数据能够在不同设备之间进行有效的传输。IP协议的主要作用包括寻址、分组、路由和转发数据包&am…

计算机网络 期末复习(谢希仁版本)第4章

路由器:查找转发表,转发分组。 IP网的意义:当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就…

2024 vite 静态 scp2 自动化部署

1、导入库 npm install scp2 // 自动化部署 npm install chalk // 控制台输出的语句 npm install ora2、核心代码 创建文件夹放在主目录下的 deploy/index.js 复制粘贴以下代码: import client from scp2; import chalk from chalk; import ora from ora;const s…

K8s速览

k8s的核心能力 ● 服务发现与负载均衡 ● 服务恢复 ● 服务伸缩 ● 自动发布与回滚 ● 批量执行 架构 server-client两层架构,Master作为中央管控节点,会和每一个Node进行一个连接; 所有UI层,client的操作,只会和Mat…

详解linux设备下的/dev/null

/dev/zero是一个特殊的设备文件,它在Linux系统中通常被用来生成无限数量的零数据流。 这个设备文件位于/dev目录下,它不代表任何实际的硬件设备,而是一个虚拟设备。 当从/dev/zero设备中读取数据时,会得到无限数量的零字节&…

【机器学习】因TensorFlow所适配的numpy版本不适配,用anaconda降低numpy的版本

目录 0 TensorFlow最高支持的numpy版本 1 激活你的环境(如果你正在使用特定的环境) 2 查找可用的NumPy版本 3 安装特定版本的NumPy 4. 验证安装 5.(可选)如果你更改了base环境 0 TensorFlow最高支持的numpy版本 要使用 …

Python | Leetcode Python题解之第132题分割回文串II

题目: 题解: class Solution:def minCut(self, s: str) -> int:n len(s)g [[True] * n for _ in range(n)]for i in range(n - 1, -1, -1):for j in range(i 1, n):g[i][j] (s[i] s[j]) and g[i 1][j - 1]f [float("inf")] * nfor …

k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)HPA详细解释与案例应用

文章目录 前言HPA简介简单理解详细解释HPA 的工作原理监控系统负载模式HPA 的优势使用 HPA 的注意事项应用类型 应用环境1.metircs-server部署2.HPA演示示例(1)部署一个服务(2)创建HPA对象(3)执行压测 前言…

安装node

下载地址 Node.js — Run JavaScript Everywhere 按照下面的图操作即可 然后就下载完了。

【Vue】声明式导航-导航链接

文章目录 一、引入二、解决方案三、代码示例四、声明式导航-两个类名1)router-link-active2)router-link-exact-active 一、引入 但凡说到声明式导航,都需要想到router-link 需求 实现导航高亮效果 如果使用a标签进行跳转的话,需要…

【网络编程开发】8.TCP连接管理与UDP协议 9.IP协议与ethernet协议

8.TCP连接管理与UDP协议 三次握手 三次握手的过程在TCP/IP网络通信中起着至关重要的作用,它不仅确保了数据的可靠传输,还为两端的数据传输提供了稳定的连接初始化过程。这一过程涉及到几个关键步骤,每个步骤都有其特定的目的和功能。 步骤&…

算法人生(21):从“React框架”看“情绪管理”

说起React框架,我们知道它是一种由Facebook开发和维护的开源JavaScript库,主要用于构建用户界面,特别是单页应用程序(SPA)。React框架围绕组件化,即把用户界面拆分为可复用的独立组件,每个组件负…

SM481,SM432和利时DCS备件

SM481,SM432和利时DCS备件。POU名只能包含字母、数字、下划线,第一个字符必须是字母或者下划线,且遵循以下原则:SM481,SM432和利时DCS备件。关于重名,不能与变量名、变量组名、POU文件夹名、任务名、SM481,SM432和利时DCS备件。工…

NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload

目录 [NISACTF 2022]popchains [NISACTF 2022]level-up [HNCTF 2022 Week1]What is Web [HNCTF 2022 Week1]Interesting_http [GXYCTF 2019]BabyUpload 今日总结&#xff1a; [NISACTF 2022]popchains 审计可以构造pop链的代码 <php class Road_is_Long{public $…

输入偏置电流是什么?

输入失调电流与输入补偿电流概念一样&#xff08;input offset current&#xff09;&#xff1a;同相减去反相输入端偏置电流的差值。这是由生产工艺导致同相与反相端的电流大小方向都会有所不同。 第一种情况&#xff1a;同相输入端减去反相输入端 第一种情况&#xff1a;同相…

桑基图Cannot set properties of undefined (setting ‘dataIndex‘)

前端写桑基图的时候碰到以上bug 原因是&#xff1a; 桑基图中的name值有重复的&#xff0c;把重复的name值去掉就好了&#xff0c;或者如果name排查太麻烦&#xff0c;可以用唯一id作为name,增加些字段&#xff0c;展示时用fomatter的方式 参照https://www.cnblogs.com/lempe…

IIoT(智能物联网)的现状、应用及安全

近年来&#xff0c;物联网&#xff08;IoT&#xff09;作为推动现代公司和智能城市发展的一个范式&#xff0c;已经取得了显著的发展。IoT使得分布式设备&#xff08;如手机、平板电脑和计算机&#xff09;能够感知并从外部环境传输数据&#xff0c;以服务于最终用户。IoT的概念…

Hive on Spark版本兼容性

Hive on Spark仅在特定版本的Spark上进行测试&#xff0c;因此给定版本的Hive只能保证与特定版本的Spark一起工作。其他版本的Spark可能与给定版本的Hive一起工作&#xff0c;但不能保证。以下是Hive版本及其对应的Spark版本列表&#xff1a; 详情参考官方文档&#xff1a;http…

韩顺平0基础学java——第19天

p396-406 final关键字 1.final修饰的为“常量”&#xff0c;需要给初始值。1可以直接定义时赋值&#xff0c;2在构造器中&#xff0c;3在代码块中。 注意静态代码块只能访问静态变量。 2.如果final修饰的关键字是静态的&#xff0c;那就不能在构造器中赋值&#xff0c;只能…