[图解]分析模式-04-通讯录2

07-21 1069阅读

[图解]分析模式-04-通讯录2[图解]分析模式-04-通讯录2[图解]分析模式-04-通讯录2[图解]分析模式-04-通讯录2[图解]分析模式-04-通讯录2[图解]分析模式-04-通讯录21

00:00:01,090 --> 00:00:06,010

首先我们来看通讯录的一个实例

2

00:00:07,140 --> 00:00:09,570

上过之前的分析设计高阶

3

00:00:09,580 --> 00:00:11,080

或者说以前叫

4

00:00:11,090 --> 00:00:12,760

领域驱动设计的课程的同学

5

00:00:12,770 --> 00:00:16,330

可能幻灯片看到过

6

00:00:18,910 --> 00:00:21,780

我们也是在这个基础上进一步深化的

7

00:00:23,780 --> 00:00:26,330

这个图我就直接拿来借用了

8

00:00:27,440 --> 00:00:29,670

因为这是虚构的

9

00:00:30,350 --> 00:00:32,550

你要再虚构这么一个人

10

00:00:32,960 --> 00:00:35,620

要替换要什么还挺麻烦的

11

00:00:35,870 --> 00:00:39,340

还是拿邓超越邓总来说事了

12

00:00:41,840 --> 00:00:45,290

邓总有这么一些联系方式

13

00:00:45,820 --> 00:00:47,810

当然他还有一些其他的

14

00:00:49,150 --> 00:00:50,720

是非联系方式的

15

00:00:51,620 --> 00:00:52,890

职务什么我们先不管了

16

00:00:52,980 --> 00:00:58,260

我们先看通讯录这部分,直接搬运过来

17

00:00:58,670 --> 00:00:59,860

这肯定是不好的了

18

00:01:01,120 --> 00:01:04,380

这样列过来,倒是直截了当

19

00:01:04,390 --> 00:01:09,680

而且迎合文盲的水平了

20

00:01:09,690 --> 00:01:12,450

但是这个结构是不好的

21

00:01:12,460 --> 00:01:15,880

因为他违反第一范式

22

00:01:16,860 --> 00:01:19,520

同样的一个内容

23

00:01:19,530 --> 00:01:21,150

你搞了多个属性

24

00:01:22,840 --> 00:01:24,480

而且你这123,4怎么办

25

00:01:24,730 --> 00:01:25,680

还有更多怎么办

26

00:01:26,830 --> 00:01:28,180

这个结构显然是不好扩张的

27

00:01:28,730 --> 00:01:33,130

它把数据的变化

28

00:01:33,140 --> 00:01:36,550

就直接体现在了结构的变化上面

29

00:01:37,890 --> 00:01:39,290

我有多个电话,就变成

30

00:01:39,300 --> 00:01:42,580

我有多个电话的字段了,那不行

31

00:01:46,470 --> 00:01:50,470

所以首先要把它分离出去

32

00:01:51,460 --> 00:01:52,700

多个分离出来

33

00:01:53,600 --> 00:01:55,790

电话号码,手机号码

34

00:01:55,800 --> 00:01:57,690

电子邮件,这样来

35

00:01:58,190 --> 00:01:59,340

这个也是可以的

36

00:02:00,850 --> 00:02:04,490

如果说没有太复杂的要求,这样也行

37

00:02:04,500 --> 00:02:05,730

把多个的分离出去

38

00:02:05,740 --> 00:02:09,230

一个的放里面,或者你就放里面

39

00:02:09,240 --> 00:02:10,750

然后标多个就行了

40

00:02:11,210 --> 00:02:14,120

在电话后面加一个*

41

00:02:14,480 --> 00:02:17,430

表示这是多个,也行

42

00:02:17,560 --> 00:02:18,750

不用搞这个出来

43

00:02:23,430 --> 00:02:26,930

但是又有一个问题,就是说

44

00:02:26,940 --> 00:02:30,870

联系手段的废弃

45

00:02:31,260 --> 00:02:33,500

和新兴的添加

46

00:02:33,510 --> 00:02:34,780

出来新的类型的问题

47

00:02:35,030 --> 00:02:36,780

比如说,以前的传真号、MSN

48

00:02:37,220 --> 00:02:40,810

还有传呼机BP机

49

00:02:40,820 --> 00:02:42,050

现在都没有了

50

00:02:43,980 --> 00:02:46,640

当时如果说我们做了一个模型

51

00:02:46,950 --> 00:02:49,210

上面有MSN、有BP机

52

00:02:49,220 --> 00:02:50,330

有传真号

53

00:02:52,240 --> 00:02:53,720

但是没有微信微博

54

00:02:55,500 --> 00:02:58,360

这个结构本身就失效了

55

00:03:00,690 --> 00:03:02,000

如果说不想失效

56

00:03:02,210 --> 00:03:03,410

有的就会拿

57

00:03:03,420 --> 00:03:05,890

比如说,传真意思就是微信的意思

58

00:03:06,490 --> 00:03:09,520

把不用的拿出来用

59

00:03:09,530 --> 00:03:11,230

MSN就是微博的意思

60

00:03:13,510 --> 00:03:15,580

这显然也是不好的

61

00:03:16,900 --> 00:03:18,440

所以这个里面

62

00:03:18,450 --> 00:03:20,740

我们就不能把一些

63

00:03:21,520 --> 00:03:24,810

容易变化的内容

64

00:03:24,820 --> 00:03:28,380

可以直接就硬性的来建模了

65

00:03:29,580 --> 00:03:33,670

必须建模一些比较常驻的

66

00:03:33,680 --> 00:03:38,710

就是说,现在有,以后也有的,这样一些概念

67

00:03:39,950 --> 00:03:42,460

像MSN现在就没有了

68

00:03:42,870 --> 00:03:44,970

20年前有

69

00:03:45,100 --> 00:03:46,250

现在没有了

70

00:03:46,760 --> 00:03:47,620

微信现在有

71

00:03:47,630 --> 00:03:50,210

但是20年前就没有

72

00:03:50,220 --> 00:03:52,440

10年之后有没有就不知道了

73

00:03:56,110 --> 00:04:00,620

所以,哪些概念是我们过去有

74

00:04:00,630 --> 00:04:02,370

现在有、以后也有的

75

00:04:03,870 --> 00:04:04,950

比如说,联系方式

76

00:04:06,950 --> 00:04:09,190

这个是过去有

77

00:04:09,200 --> 00:04:10,510

现在有以后也有的

78

00:04:11,270 --> 00:04:13,120

我们必须要把我们的模型

79

00:04:14,300 --> 00:04:16,100

建立在这样的概念上面

80

00:04:17,050 --> 00:04:21,300

不能直接MSN、传真这样

81

00:04:23,910 --> 00:04:26,990

或者说,我们至少要在这个层次上来操作

82

00:04:28,510 --> 00:04:29,790

来编写我们的程序

83

00:04:31,880 --> 00:04:35,820

下面的这些我们可以把它变成子类

84

00:04:36,090 --> 00:04:38,340

就可以通过泛化来隔离变化

85

00:04:38,740 --> 00:04:43,740

但是我们用来做计算的时候

86

00:04:47,960 --> 00:04:49,070

我们只到这一层

87

00:04:49,460 --> 00:04:52,240

下面这个我们不能直接去使用它的

88

00:04:53,050 --> 00:04:54,040

只能到这一层

89

00:04:56,730 --> 00:04:58,280

通过泛化来隔离变化

90

00:05:01,120 --> 00:05:03,960

显然我们讲到类建模的时候

91

00:05:04,540 --> 00:05:05,530

包括我们前面讲

92

00:05:07,050 --> 00:05:08,810

分析设计高阶的时候也说了

93

00:05:10,380 --> 00:05:12,200

这个幻灯片大家都见过了

94

00:05:13,730 --> 00:05:18,570

就是说,如果能用关联解决的,关联优先

95

00:05:19,310 --> 00:05:23,040

也就是说,我们一个关系

96

00:05:24,210 --> 00:05:29,860

我们可能可以用泛化方式来解决

97

00:05:31,160 --> 00:05:34,500

人分为男人女人两个子集

98

00:05:37,510 --> 00:05:40,310

那就是子类、超类的泛化关系

99

00:05:41,740 --> 00:05:44,980

但是我们也可以说人有性别

100

00:05:46,590 --> 00:05:48,960

我们把男人女人这些

101

00:05:49,970 --> 00:05:52,000

可以看作性别的一个实例

102

00:05:52,010 --> 00:05:56,430

人有性别,这样就完了

103

00:05:58,770 --> 00:06:02,120

然后本来我们是说这上面计税

104

00:06:02,680 --> 00:06:03,630

下面计税

105

00:06:03,640 --> 00:06:08,610

然后各自实现自己的计税的计算方式

106

00:06:08,620 --> 00:06:09,090

107

00:06:10,180 --> 00:06:12,770

如果说这里面还能提炼出来的话

108

00:06:13,440 --> 00:06:15,120

它们的区别就在于一个税率

109

00:06:16,420 --> 00:06:20,080

那么我们就用上面这个

110

00:06:21,160 --> 00:06:23,190

税费=收入*性别.税率,就可以了

111

00:06:24,100 --> 00:06:25,100

不需要下面这个

112

00:06:25,110 --> 00:06:28,640

但如果说更复杂了

113

00:06:29,740 --> 00:06:30,460

没办法了

114

00:06:31,190 --> 00:06:35,010

必须通过行为的差别来解决

115

00:06:36,500 --> 00:06:37,930

必须要引进泛化关系

116

00:06:38,610 --> 00:06:39,400

这个没有问题

117

00:06:40,640 --> 00:06:41,820

当然不引进泛化关系

118

00:06:41,830 --> 00:06:47,230

你在类里面用条件分支也可以

119

00:06:47,360 --> 00:06:50,360

这两个是互相可以替换的

120

00:06:50,530 --> 00:06:52,440

就是说,我们把泛用关系

121

00:06:52,450 --> 00:06:57,270

延迟到不得不用的地方

122

00:06:59,060 --> 00:07:00,300

这个我们前面说过了

123

00:07:02,550 --> 00:07:05,440

所以这里面我们就会说到一个

124

00:07:05,450 --> 00:07:08,830

在各种各样的模式里面

125

00:07:09,000 --> 00:07:10,430

特别是分析模式里面

126

00:07:12,580 --> 00:07:14,140

用的一个转换的方式

127

00:07:15,230 --> 00:07:18,390

把泛化转成类、类类型这样的关联

128

00:07:21,120 --> 00:07:23,630

像刚才性别就是一个类类型

129

00:07:25,860 --> 00:07:28,290

类类型这个,是我这边的称呼了

130

00:07:30,270 --> 00:07:35,040

历史上也有一些

131

00:07:35,050 --> 00:07:38,410

方法学家归纳了类似的模式

132

00:07:39,540 --> 00:07:41,230

它们的叫法各自不同

133

00:07:41,360 --> 00:07:45,620

比如说Odell叫

134

00:07:45,630 --> 00:07:46,740

power type

135

00:07:49,590 --> 00:07:55,820

强力类型

136

00:07:56,350 --> 00:08:03,350

就类型上面的类型,树,树的类别,树种

137

00:08:04,490 --> 00:08:06,200

这是1994年的了

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]