[图解]企业应用架构模式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

我们来看,到这里

相关推荐
Javatutouhouduan15 天前
刚入行Java,如何深入学习JVM底层原理?
java·jvm·面试·程序员·架构师·八股文
power-辰南20 天前
Kafka 常见面试题深度解析
java·大数据·分布式·kafka·架构师·消息中间件·2024面试题
rolt23 天前
[pdf,epub]228页《分析模式》漫谈合集01-45提供下载
ddd·架构师·uml·领域驱动设计·面向对象
战神刘玉栋24 天前
《通俗易懂 · JSqlParser 解析和构造SQL》
架构师·jsqlparser
rolt1 个月前
[pdf,epub]162页《分析模式》漫谈合集01-35提供下载
ddd·架构师·uml·领域驱动设计·面向对象
rolt1 个月前
中文书籍对《人月神话》的引用(161-210本):微软的秘密
软件工程·产品经理·架构师
rolt2 个月前
[pdf,epub]105页《分析模式》漫谈合集01
ddd·架构师·uml·领域驱动设计·分析模式
Javatutouhouduan2 个月前
Java程序员如何获得高并发经验?
java·分布式·后端·程序员·高并发·架构师
Javatutouhouduan2 个月前
有哪些 Java 面试题 90% 的公司都会问到?
java·后端·面试·程序员·架构师·八股文
W Y3 个月前
【架构设计模式-2】创建型、结构型、行为型等设计模式
设计模式·架构·系统架构·架构师·软考