1
00:00:00,550 --> 00:00:05,020
同样,我们也一步一步执行看看
2
00:00:06,570 --> 00:00:08,930
我给代码加了一些注释
3
00:00:08,940 --> 00:00:12,830
我们一边走一边讲
4
00:00:32,160 --> 00:00:33,120
5
00:00:39,200 --> 00:00:40,900
首先,主程序
6
00:00:40,910 --> 00:00:43,330
也是和前面一样,控制台程序
7
00:00:44,580 --> 00:00:50,120
然后创建一个文字处理器
8
00:00:55,030 --> 00:00:56,640
电子表格、数据库
9
00:00:57,190 --> 00:01:01,260
就是创建了三个产品对象
10
00:01:04,320 --> 00:01:06,030
我们看这里,它创建的时候
11
00:01:06,750 --> 00:01:10,370
它是调用了产品
12
00:01:13,650 --> 00:01:15,250
不同的操作
13
00:01:17,600 --> 00:01:18,700
来创建对象
14
00:01:18,950 --> 00:01:23,060
并不是直接说new一个,不是这样
15
00:01:23,920 --> 00:01:30,050
因为前面讲它要创建产品的时候
16
00:01:30,060 --> 00:01:33,650
它要绑定相应的一个策略
17
00:01:34,450 --> 00:01:38,410
所以它是没有用new,new是有的
18
00:01:38,620 --> 00:01:40,420
它是放在这个里面
19
00:01:40,710 --> 00:01:42,100
我们往下走
20
00:01:42,110 --> 00:01:45,570
先看创建文本处理器对象
21
00:01:49,320 --> 00:01:51,900
就跳到这个产品这里来了,产品这里
22
00:01:52,800 --> 00:01:54,430
你看,文本处理器对象
23
00:01:56,020 --> 00:01:59,580
刚才只是一个名称
24
00:02:01,150 --> 00:02:08,480
现在它在这里就调用了产品的构造器了
25
00:02:08,890 --> 00:02:09,920
构造器在这里
26
00:02:11,730 --> 00:02:18,260
构造器它的参数,就两个,一个名称
27
00:02:18,270 --> 00:02:19,220
一个收入确认策略
28
00:02:19,860 --> 00:02:23,960
里面内容很简单,就是赋值了
29
00:02:24,410 --> 00:02:27,430
把这个名称赋值到这里
30
00:02:27,440 --> 00:02:30,190
然后这个策略把它绑定到这里
1
00:00:01,250 --> 00:00:04,380
这里的代码的内容
2
00:00:04,390 --> 00:00:05,660
和书上
3
00:00:07,700 --> 00:00:09,460
写出来的代码的片段
4
00:00:09,810 --> 00:00:11,160
是基本一样的
5
00:00:12,220 --> 00:00:15,190
主要在这里,加了一个
6
00:00:17,660 --> 00:00:20,820
readonly这样一个修饰
7
00:00:20,990 --> 00:00:25,930
意思就是说赋值之后就不允许再修改了
8
00:00:27,200 --> 00:00:30,880
运行的时候赋值,跟那个常数还不一样
9
00:00:30,890 --> 00:00:35,650
常数是编译的时候它就已经编译在里面了
10
00:00:36,670 --> 00:00:37,960
这仍然是一个变量
11
00:00:37,970 --> 00:00:41,910
只不过变量只能赋值一次
12
00:00:43,940 --> 00:00:44,500
书里没有
13
00:00:46,780 --> 00:00:51,400
为什么要这个,好像不要这个也是可以的
14
00:00:53,030 --> 00:00:55,190
要这个的意思就是说让它赋值之后
15
00:00:55,200 --> 00:00:56,230
就不能改变
16
00:00:59,750 --> 00:01:01,790
我也不知道为什么
17
00:01:01,800 --> 00:01:03,020
作者加这个
18
00:01:03,850 --> 00:01:05,240
没有搞太清楚
19
00:01:06,720 --> 00:01:08,270
这个问题不是很大了
20
00:01:09,450 --> 00:01:13,500
好,你看,这里以这个为参数
21
00:01:13,510 --> 00:01:18,580
你看,完全收入策略为参数
22
00:01:18,590 --> 00:01:20,100
创建一个产品对象
23
00:01:21,480 --> 00:01:26,950
所以这个产品是什么类型的产品
24
00:01:26,960 --> 00:01:28,190
实际上你是不知道的
25
00:01:29,010 --> 00:01:31,890
你只能看到这个产品绑定了什么策略
26
00:01:36,080 --> 00:01:37,080
从这个来判断
27
00:01:38,640 --> 00:01:40,150
所以从这个角度看的话
28
00:01:40,160 --> 00:01:43,190
更合适的做法应该是不要说什么策略这种
29
00:01:43,200 --> 00:01:45,900
我们前面软件方法也说了
30
00:01:45,910 --> 00:01:48,230
什么策略、规则
31
00:01:49,030 --> 00:01:49,980
什么器
32
00:01:50,810 --> 00:01:51,840
什么or er
33
00:01:52,530 --> 00:01:55,760
这些都是不好的名字
34
00:01:55,970 --> 00:01:57,840
应该改成更合适的
35
00:01:59,130 --> 00:02:00,130
更本质的概念
36
00:02:00,140 --> 00:02:02,090
比如说,为什么有这个策略
37
00:02:02,630 --> 00:02:04,570
因为它属于不同类型
38
00:02:05,210 --> 00:02:06,610
这里应该写产品类型
39
00:02:06,780 --> 00:02:10,200
就前面那个表模块那个地方
40
00:02:11,810 --> 00:02:13,250
还有事务脚本的地方
41
00:02:13,260 --> 00:02:15,570
有一个产品类型的表或类
42
00:02:17,410 --> 00:02:18,630
把它改成这个就行了
43
00:02:19,230 --> 00:02:21,850
实际上就相当于彩色建模里面的描述
44
00:02:26,790 --> 00:02:32,960
然后,像这种情况,你是什么类型的产品
45
00:02:33,630 --> 00:02:37,850
你是文字处理器,还是电子表格,还是数据库
46
00:02:37,860 --> 00:02:40,290
只能从你绑这个策略来判断
47
00:02:40,870 --> 00:02:42,970
它本身没有其它标记
48
00:02:43,420 --> 00:02:45,950
当然,你说可以从名字判断,这名字是不准的
49
00:02:46,370 --> 00:02:49,020
比如说,你是一个电子表格
50
00:02:50,510 --> 00:02:53,610
明明你是一个电子表格的软件
51
00:02:53,620 --> 00:02:56,560
功能是电子表格的功能,我给你命名叫文档高手
52
00:02:56,840 --> 00:02:57,780
你怎么说,对不对
53
00:02:59,330 --> 00:03:02,440
这个名字本身不是一个严谨的含义
54
00:03:02,570 --> 00:03:03,760
要从这里来判断
55
00:03:04,440 --> 00:03:12,580
这里你看,它用这个策略它是新建的
56
00:03:14,100 --> 00:03:15,580
新建的一个策略对象
57
00:03:16,410 --> 00:03:19,800
然后把它赋值,把它作为参数
58
00:03:20,930 --> 00:03:22,590
传入构造器