1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
1
00:00:00,160 --> 00:00:02,780
Let's start our decision of design patterns by looking
2
00:00:02,780 --> 00:00:05,280
at the history of patterns. As you know, I like
3
00:00:05,280 --> 00:00:07,810
to give this sort of historical perspective on how and
4
00:00:07,810 --> 00:00:10,600
when concepts were defined. In this case, we have to
5
00:00:10,600 --> 00:00:14,830
go back to 1977, when Christopher Alexander, an American professor
6
00:00:14,830 --> 00:00:18,300
of architecture at UC Berkeley, introduces the idea of patterns,
7
00:00:18,300 --> 00:00:21,700
successful solutions to problems, in his book called a Pattern
8
00:00:21,700 --> 00:00:25,640
Language. The book contains about 250 patterns. And the idea
9
00:00:25,640 --> 00:00:27,700
is that occupants of a building should be able
10
00:00:27,700 --> 00:00:30,110
to design it. And the patterns in the book provide
11
00:00:30,110 --> 00:00:32,368
a way to do that. And this idea of design
12
00:00:32,368 --> 00:00:35,964
patterns, so, a formal way of documenting successful solutions to
13
00:00:35,964 --> 00:00:41,200
problems, inspired several other disciplines. In particular, in 1987,
14
00:00:41,200 --> 00:00:44,810
Ward Cunningham and Kent Beck leveraged this idea of Alexander's
15
00:00:44,810 --> 00:00:48,360
patterns in the context of an object oriented language.
16
00:00:48,360 --> 00:00:50,840
And in this specific the language was Smalltalk.
17
00:00:50,840 --> 00:00:52,666
Some of you might know the language. So what Cunningham
18
00:00:54,492 --> 00:00:56,320
and Beck did, was to create a 5 pattern
19
00:00:56,320 --> 00:00:59,880
language for guiding novice Smalltalk programmers. So they did
20
00:00:59,880 --> 00:01:03,090
an experiment and had several developers using their patterns, and
21
00:01:03,090 --> 00:01:06,330
the experiment was extremely successful. The users were able to
22
00:01:06,330 --> 00:01:09,940
create elegant designs using the provided patterns. And in case
23
00:01:09,940 --> 00:01:12,210
you are interested in reading about it, Cunningham and Beck
24
00:01:12,210 --> 00:01:15,660
reported the results in the article, Using Pattern Languages for
25
00:01:15,660 --> 00:01:17,940
Object Oriented Programs, which was published at the
26
00:01:17,940 --> 00:01:21,854
International Conference on Object Oriented Programming, Systems, Languages, and
27
00:01:21,854 --> 00:01:25,390
Applications, also called OOPSLA, in 1987. At the
28
00:01:25,390 --> 00:01:28,480
same time, Eric Gamma was working on his dissertation,
29
00:01:28,480 --> 00:01:31,030
whose topic was the importance of patterns and
30
00:01:31,030 --> 00:01:34,430
how to capture them. Between 1987 and 1992, there
31
00:01:34,430 --> 00:01:37,520
were several workshops related to design patterns. And
32
00:01:37,520 --> 00:01:40,740
in 1992, Jim Coplien compiled a catalog of C++
33
00:01:40,740 --> 00:01:43,140
items, which are some sort of patterns, and
34
00:01:43,140 --> 00:01:45,130
he listed this catalog of patterns in his
35
00:01:45,130 --> 00:01:48,720
book, which was titled Advanced C++ Programming Styles
36
00:01:48,720 --> 00:01:52,952
and Idioms. Finally, in 1993 and 1994, there were
37
00:01:52,952 --> 00:01:56,160
several additional workshops focused on patterns. And this
38
00:01:56,160 --> 00:01:59,625
workshop brought together many patterns folks, including these
39
00:01:59,625 --> 00:02:03,040
4 guys, Erich Gamma, Richard Helm, Ralph Johnson,
40
00:02:03,040 --> 00:02:06,040
and John Vlissides. These guys are also known as
41
00:02:06,040 --> 00:02:08,970
the gang of 4. And the result of this collaboration was the
42
00:02:08,970 --> 00:02:11,840
famous book Design Patterns: Elements of
43
00:02:11,840 --> 00:02:14,320
Reusable Object Oriented Software. So this
44
00:02:14,320 --> 00:02:17,640
is basically The Book on design patterns. If you want to buy
45
00:02:17,640 --> 00:02:19,780
a book on design pattern, this is the one you should get.
|