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
我们来看,到这里