1
00:00:00,080 --> 00:00:03,840
Scharf 1 habe ich jetzt 
irgendwie ein Halstuch verfasst.

2
00:00:03,840 --> 00:00:07,360
Gala ich denke mir jetzt gerade 
irgendwas aus und scharf 2 hat 

3
00:00:07,360 --> 00:00:09,760
auf einmal auch ein Halstuch um 
was ist da los? 

4
00:00:09,760 --> 00:00:13,720
Beides schon nach scharf. 
Coding Buddies Dein Podcast rund

5
00:00:13,720 --> 00:00:15,840
um Softwareentwicklung und 
aktueller Tech News. 

6
00:00:16,480 --> 00:00:31,260
Herzlich Willkommen 
einen wunderschönen guten Tag 

7
00:00:31,260 --> 00:00:34,300
und herzlich willkommen. 
Schön, dass du wieder 

8
00:00:34,300 --> 00:00:36,220
eingeschaltet hast. 
Zur neuen Folge vom Coding 

9
00:00:36,220 --> 00:00:39,840
Buddies Podcast. 
Und zwar mit mir, mit fabi und 

10
00:00:39,840 --> 00:00:42,120
mit Tino. 
Er sitzt mir hier virtuell 

11
00:00:42,120 --> 00:00:45,680
wieder gegenüber, er nickt 
schon, er grinst schon, er hat 

12
00:00:45,680 --> 00:00:50,160
Bock, hoff ich zumindest. 
Wie geht's dir? 

13
00:00:51,240 --> 00:00:52,160
Was geht ab? 
Fabi? 

14
00:00:52,160 --> 00:00:55,280
Ja ich hab mega Bock, ich hab 
richtig Bock ja das ist richtig 

15
00:00:55,280 --> 00:00:57,920
gute Laune, das wird richtig 
wird unangenehm heute für dich. 

16
00:00:59,440 --> 00:01:02,000
Super. 
Ja, das das trifft sich gut. 

17
00:01:02,000 --> 00:01:04,400
Ich hab richtig, richtig 
schlechte Laune. 

18
00:01:05,200 --> 00:01:09,240
Ja, das ich gleich das aus. 
Oh nee, das wär aber weißt du, 

19
00:01:09,240 --> 00:01:11,680
das ist halt auch so n Ding, 
muss ich ganz ehrlich sagen das 

20
00:01:11,680 --> 00:01:14,760
das das ich weiß hat man 
wahrscheinlich irgendwie auf dem

21
00:01:14,760 --> 00:01:17,400
Schirm, aber wenn du so n 
Podcast machst ne dann gibt es 

22
00:01:17,400 --> 00:01:21,480
ja auch mal Tage wo man sich so 
denkt so oh weißt du heute ist n

23
00:01:21,480 --> 00:01:25,200
Podcast aufnehmen dran aber 
heute hab ich irgendwie fühl ich

24
00:01:25,200 --> 00:01:27,200
mich nicht so ne. 
So, und dann die. 

25
00:01:27,200 --> 00:01:28,720
Abstimmung. 
Ja, genau so. 

26
00:01:28,720 --> 00:01:30,680
Aber dann muss man halt 
irgendwie umschalten und 

27
00:01:30,680 --> 00:01:33,200
trotzdem mal sagen so ne doch 
ich hab jetzt gute Laune, 

28
00:01:33,200 --> 00:01:36,320
hinterher kannst du ja wieder 
schlechte Laune haben, ne ja. 

29
00:01:38,880 --> 00:01:42,240
Das Gute ist, dass ich, selbst 
wenn ich das Gefühl hab, oh, 

30
00:01:42,240 --> 00:01:45,880
jetzt n keine Ahnung, Zeitdruck 
oder so, jetzt noch n Podcast 

31
00:01:45,880 --> 00:01:48,440
aufnehmen, wenn diese Gedanken 
aufkommen, wird dann aber 

32
00:01:48,440 --> 00:01:51,040
anfangen, also auch wie jetzt 
zum Beispiel gut, heute hab ich 

33
00:01:51,040 --> 00:01:54,480
nie Bock gehabt, ja, aber dass 
man sich dann denkt, so ah nee 

34
00:01:54,480 --> 00:01:58,240
doch ist geil macht Spaß Podcast
aufnehmen macht Spaß also ich 

35
00:01:58,240 --> 00:02:02,560
rede ja sehr gerne mit dir über 
diese Themen und allein das 

36
00:02:02,560 --> 00:02:05,840
Feedback so aus der Community 
motiviert mich extrem muss ich 

37
00:02:05,840 --> 00:02:08,080
sagen. 
Da denn halt auch immer wieder 

38
00:02:08,320 --> 00:02:10,960
on Point zu sein sozusagen. 
Ja, das ist ja auch nicht so, 

39
00:02:10,960 --> 00:02:14,120
dass ich mir denke, so, ich hab 
meistens keinen Bock auf Podcast

40
00:02:14,120 --> 00:02:16,320
sozusagen aufzunehmen, sondern 
es ist halt eher so, dass ich 

41
00:02:16,320 --> 00:02:19,440
mir dann so denke, so irgendwie 
ist es viel an dem Tag, ne, 

42
00:02:19,440 --> 00:02:21,920
irgendwie ist sowieso irgendwie,
man hat den Kopf voll oder so 

43
00:02:21,920 --> 00:02:23,920
und dann ist man irgendwie 
vielleicht nicht so in Stimmung,

44
00:02:23,920 --> 00:02:28,080
so ne, also was kann ja 
vorkommen, finde ich nur also. 

45
00:02:28,560 --> 00:02:30,880
Ich weiß nicht, also mir ist das
letztens erstmal so bewusst 

46
00:02:30,880 --> 00:02:33,520
geworden, so ne, aber eigentlich
wie du sagst ne man fängt an 

47
00:02:33,520 --> 00:02:36,480
Podcast irgendwie aufzunehmen 
und dann hat man so denk mal so 

48
00:02:36,480 --> 00:02:38,680
ja komm ist irgendwie geil hab 
ich habt ihr auch immer macht 

49
00:02:38,680 --> 00:02:42,520
ihr auch immer Spaß mit dir zu 
zu quatschen Tino und das ist 

50
00:02:42,520 --> 00:02:44,040
gut. 
Das ist ne gute Voraussetzung 

51
00:02:44,600 --> 00:02:48,960
für diesen Podcast. 
Ja, auf jeden Fall ne. 

52
00:02:48,960 --> 00:02:52,640
Aber bevor also wir wollen ja 
jetzt mal wirklich anfangen ne 

53
00:02:52,720 --> 00:02:55,360
und auch wirklich jetzt mal 
starten in die Folge rein. 

54
00:02:56,240 --> 00:03:00,560
Ganz kurz noch, weil das ist ja 
unsere klassische Erinnerung, ne

55
00:03:00,560 --> 00:03:04,840
Liebe zu lieber zu, wenn du 
sagst, geiler Podcast, da will 

56
00:03:04,840 --> 00:03:06,960
ich nichts verpassen. 
Ja, vielleicht hast du den auch 

57
00:03:06,960 --> 00:03:09,440
gerade erst entdeckt, dann 
abonnier den Podcast auf jeden 

58
00:03:09,440 --> 00:03:12,840
Fall und vielleicht, falls du es
noch nicht gemacht hast, mach 

59
00:03:12,840 --> 00:03:14,800
das Glöckchen an, weil dann 
verpasst du auch keine Folge 

60
00:03:14,800 --> 00:03:17,440
mehr. 
Es gibt gerne ne Bewertung da 

61
00:03:17,440 --> 00:03:20,480
das hilft uns enorm, das muss 
man einfach sagen. 

62
00:03:20,560 --> 00:03:23,760
Es ist halt unglaublich wichtig 
für einen Podcast auf dem 

63
00:03:23,760 --> 00:03:25,840
Plattform auch ne Bewertung zu 
bekommen. 

64
00:03:26,080 --> 00:03:29,280
Ja, das stimmt. 
Gut, dass du es sagst, Tino, 

65
00:03:30,640 --> 00:03:33,840
heute geht es ja mal wieder um 
eine bestimmte Reihe, die wir 

66
00:03:33,840 --> 00:03:38,280
ins Leben gerufen haben, die 
auch schon sehr wichtig ist 

67
00:03:38,280 --> 00:03:42,400
insgesamt für die 
Softwareentwicklung, und zwar 

68
00:03:42,400 --> 00:03:47,360
geht es um die Design Pattern 
Folge und heute ist ja mal die 

69
00:03:47,360 --> 00:03:48,360
ist. 
Ja, auch mittlerweile schon gut 

70
00:03:48,360 --> 00:03:49,960
fortgeschritten. 
Ne, also wir haben schon so n 

71
00:03:49,960 --> 00:03:53,640
paar Meter gemacht, cool. 
Haben wir auch gutes Feedback 

72
00:03:53,640 --> 00:03:56,480
dazu bekommen und ich muss sagen
ich find es halt auch immer echt

73
00:03:56,480 --> 00:03:59,200
cool jedes Pattern noch mal so n
bisschen, also nicht jedes alle 

74
00:03:59,200 --> 00:04:01,200
werden wir nicht schaffen. 
Es gibt aber viel zu viele, ja, 

75
00:04:01,200 --> 00:04:03,920
aber die wir so rauspicken noch 
mal durchzuarbeiten find ich 

76
00:04:03,920 --> 00:04:05,520
schon ziemlich cool muss ich 
sagen. 

77
00:04:05,640 --> 00:04:08,040
Man kann auch immer selber noch 
was lernen, weil manchmal ist 

78
00:04:08,040 --> 00:04:09,840
man ja auch so eingefahren und 
denkt sich so. 

79
00:04:10,000 --> 00:04:12,160
Ja, zum Beispiel wie beim 
Factory Pattern beispielsweise, 

80
00:04:12,160 --> 00:04:16,200
da dacht ich mir auch so, ah OK,
cool, ja ich hab zum Beispiel 

81
00:04:16,200 --> 00:04:19,279
noch nie so krass über n. 
Was war das? 

82
00:04:19,760 --> 00:04:24,120
Dieses, dieses, dieses krasse 
Endgame, Factory Pattern, 

83
00:04:24,120 --> 00:04:26,720
nachgedacht, Endgame. 
Factory. 

84
00:04:26,960 --> 00:04:28,960
Die Abstract. 
Factory, dass es halt einfach 3 

85
00:04:28,960 --> 00:04:30,960
Stufen gibt davon ja. 
Ja, richtig. 

86
00:04:31,360 --> 00:04:33,760
Also so als Beispiel ne man man 
lernt selber auch noch was und 

87
00:04:33,760 --> 00:04:37,360
ich hoffe Liebe zu Liebe zu du 
lernst auch was davon, ansonsten

88
00:04:37,920 --> 00:04:40,440
hast du vielleicht auch einfach 
nur Bock den Podcast zu hören, 

89
00:04:40,440 --> 00:04:41,680
dann ist es natürlich auch 
super. 

90
00:04:42,240 --> 00:04:44,800
Fakt ist aber Tino, worum geht 
es denn, welches Pattern ist 

91
00:04:44,800 --> 00:04:47,440
denn heute dran? 
Ja, also heute geht es um 

92
00:04:47,440 --> 00:04:51,520
Pattern, da muss ich gleich mal 
vorwegnehmen, das hab ich selbst

93
00:04:51,600 --> 00:04:55,000
sehr selten verwendet, umso 
cooler finde ich es, dass wir es

94
00:04:55,000 --> 00:04:58,320
heute mal besprechen, weil durch
sag ich mal so die Vorbereitung 

95
00:04:58,320 --> 00:05:01,960
auf die Folge hab ich mich oder 
wir uns zusammen ja noch mal mit

96
00:05:01,960 --> 00:05:04,640
dem Pattern auseinandergesetzt 
und schon Anwendungsfälle 

97
00:05:04,640 --> 00:05:09,360
gefunden dafür auch für uns, was
wir vielleicht demnächst mal auf

98
00:05:09,360 --> 00:05:12,480
Twitch wirklich mal bei einem 
Projekt verwenden können oder wo

99
00:05:12,480 --> 00:05:15,360
es Sinn macht dieses Pattern zu 
verwenden und zwar geht es 

100
00:05:15,360 --> 00:05:19,440
heute. 
Um das prototype pattern. 

101
00:05:20,000 --> 00:05:23,760
Ja, also wir wären heute quasi 
ne Art Clone Wars führen, nerve 

102
00:05:23,760 --> 00:05:28,240
alle Star Wars Fans hier. 
Es geht nämlich heute darum, es 

103
00:05:28,240 --> 00:05:31,280
klingt erstmal nerdig, aber es 
geht im Prinzip darum, dass wir 

104
00:05:31,280 --> 00:05:36,960
heute mal so copy Paste 2.0 
etablieren und zeigen warum es 

105
00:05:36,960 --> 00:05:40,280
sinnvoll ist, manchmal komplexe 
Objekte nicht immer neu zu 

106
00:05:40,280 --> 00:05:42,960
erstellen, sondern sie wirklich 
einfach zu klonen. 

107
00:05:43,120 --> 00:05:47,600
Weil das steckt halt hinter den 
Prototype Pattern und das würde 

108
00:05:47,600 --> 00:05:50,760
ich sehr gerne heute mit dir mal
so n bisschen besprechen vor und

109
00:05:50,760 --> 00:05:53,760
Nachteile nennen und vor allem 
Fabi und da freu ich mich drauf 

110
00:05:54,160 --> 00:05:55,920
wieder schöne Analogien finden 
dazu. 

111
00:05:56,800 --> 00:06:00,760
Es soll doch Analogien hageln. 
Weißt du was, zino ich, ich 

112
00:06:00,760 --> 00:06:03,760
möcht mal spoilern, dass das 
dieses Mal ja gar nicht so viel 

113
00:06:03,760 --> 00:06:06,720
um Essen geht, ne ich, ich 
glaube in den. 

114
00:06:07,520 --> 00:06:10,880
In unserer generell in unseren 
Podcasts, wenn es um Analogien 

115
00:06:10,880 --> 00:06:13,200
geht, geht es oft um Essen. 
Gerade glaub ich jetzt auch in 

116
00:06:13,200 --> 00:06:15,880
der in der Pattern Reihe hier, 
aber wir wollen heute mal 

117
00:06:15,880 --> 00:06:18,800
vielleicht warum sagst. 
Du das jetzt schalt ich 90% 

118
00:06:18,800 --> 00:06:20,560
schalten jetzt ab, wenn es nicht
um essen. 

119
00:06:21,080 --> 00:06:25,600
Geht es geht um unseren. 
Ja, unsere Essensanalogien sind 

120
00:06:25,600 --> 00:06:28,400
doch mittlerweile legendär. 
Welche Leute erwarten das doch, 

121
00:06:28,400 --> 00:06:31,760
fabi, aber du hast recht, das 
ist bei dem Pattern wirklich 

122
00:06:31,760 --> 00:06:36,320
schwierig mit Essensanalogien. 
Ja, aber das genau. 

123
00:06:36,320 --> 00:06:39,360
Du meintest ja, es geht um 
dieses Pattern. 

124
00:06:39,360 --> 00:06:42,880
Wir haben das selber auch noch 
nicht so häufig verwendet und 

125
00:06:42,880 --> 00:06:45,680
das wird auf jeden Fall 
Analogien geben, definitiv was 

126
00:06:45,680 --> 00:06:50,080
ich n bisschen ich sag mal 
missleading finde, ist der der 

127
00:06:50,080 --> 00:06:54,200
Name so Prototype, also so weiß 
nicht als ich auch das erste Mal

128
00:06:54,200 --> 00:06:56,880
dieses Pattern gehört hab, 
dachte ich mir auch so 

129
00:06:57,520 --> 00:07:01,040
Prototypen also wofür soll das 
jetzt im Endeffekt sein? 

130
00:07:01,040 --> 00:07:04,320
Weißt du weil es ist ja. 
Es steckt jetzt nicht wirklich 

131
00:07:04,320 --> 00:07:07,600
dahinter, dass du irgendwie n 
Prototyp von etwas erschaffst, 

132
00:07:07,600 --> 00:07:11,120
sondern wie du schon meintest, 
es geht ja viel ums Klonen und 

133
00:07:11,360 --> 00:07:14,040
da würde ich auch gerne schon 
mal vielleicht ne kleine 

134
00:07:14,040 --> 00:07:16,760
Analogie geben, damit man sich 
das im groben erstmal schon mal 

135
00:07:16,760 --> 00:07:21,520
so n bisschen vorstellen kann 
und zwar also angenommen du hast

136
00:07:21,520 --> 00:07:25,160
jetzt irgendwas, was vielleicht 
n bisschen komplexer ist. 

137
00:07:25,160 --> 00:07:28,720
Ne, nimm vielleicht jetzt mal 
irgendwie so n so n so n. 

138
00:07:29,360 --> 00:07:32,640
Wenn so n Formular ne und ne 
Menge drin steht, da musst du 

139
00:07:32,640 --> 00:07:35,480
ganz viele Sachen reinschreiben 
ne und ich sag jetzt zum 

140
00:07:35,480 --> 00:07:37,720
Beispiel Tino, du musst ja noch 
mal n Formular ausfüllen, das 

141
00:07:37,720 --> 00:07:41,280
ist jetzt wichtig für unseren 
Podcast hier ne und dann musst 

142
00:07:41,280 --> 00:07:46,240
du da reinschreiben OK Name 
alter Beruf und ne es gibt ja 

143
00:07:46,240 --> 00:07:48,640
Formulare keine und nimm n 
Formular vom Finanzamt oder so 

144
00:07:48,640 --> 00:07:51,360
ne dann ist sowieso Feierabend 
ne und du. 

145
00:07:52,240 --> 00:07:55,760
Und du hast jetzt irgendwie so n
so n so n Blatt Papier ne oder 

146
00:07:55,760 --> 00:07:58,400
mehrere Zettel, die ich dir dann
gebe und das musst du alles 

147
00:07:58,400 --> 00:08:00,720
ausfüllen und jetzt kommt zum 
Beispiel noch jemand anders und 

148
00:08:00,880 --> 00:08:04,000
der muss das auch machen. 
Ja dann wär es ja eigentlich 

149
00:08:04,000 --> 00:08:08,400
viel sinnvoller ja zum Beispiel 
zu sagen, OK du nimmst diesen 

150
00:08:08,400 --> 00:08:10,720
dieses. 
Blatt Papier. 

151
00:08:10,720 --> 00:08:13,800
Diese dieses. 
Formular ja, wo halt alles 

152
00:08:13,800 --> 00:08:16,280
schon, sag ich jetzt mal. 
Drin steht wie zum Beispiel 

153
00:08:16,280 --> 00:08:19,840
keine Ahnung. 
Ne, also alles die ganzen 

154
00:08:19,840 --> 00:08:21,280
Attribute sind schon 
hingeschrieben. 

155
00:08:21,280 --> 00:08:23,480
Du musst jetzt nicht noch mal 
hingehen und sagen ich nehm 

156
00:08:23,480 --> 00:08:25,640
jetzt n Blatt Papier und schreib
jetzt noch mal diesen ganzen 

157
00:08:25,640 --> 00:08:28,960
Vordruck da auf und dann geb ich
das erst weiter so und du kannst

158
00:08:28,960 --> 00:08:31,280
einfach n Kopierer jagen, kannst
den Vordruck sozusagen einmal 

159
00:08:31,280 --> 00:08:34,559
durchkopieren und dann gibt es 
halt weiter ne also das ist so 

160
00:08:34,799 --> 00:08:39,200
im groben und ganzen, du hast 
etwas ja und musst es aber nicht

161
00:08:39,200 --> 00:08:41,880
noch mal komplett von der Pike 
auf neu machen, sondern kannst 

162
00:08:41,880 --> 00:08:45,520
bestimmte Dinge die du halt 
schon hast halt eben kopieren 

163
00:08:45,520 --> 00:08:50,720
und wiederverwenden so ne. 
Ja, das ist n ganz gutes 

164
00:08:50,720 --> 00:08:53,920
Beispiel, so aus der Realität. 
Was glaub ich jeder sich 

165
00:08:53,920 --> 00:08:57,000
vorstellen kann oder schon mal 
die Erfahrung gemacht hat etwas 

166
00:08:57,000 --> 00:09:00,360
zu kopieren, gerade so Blätter 
ist ja genau der Sinn, dass du 

167
00:09:00,360 --> 00:09:04,080
es nicht jedes Mal neu schreiben
möchtest, sondern halt einfach 

168
00:09:04,320 --> 00:09:06,320
ne exakte Kopie davon erstellen 
möchtest. 

169
00:09:06,640 --> 00:09:13,040
Ja im Prinzip und dann trotzdem 
Eigenschaften dieses Blattes, 

170
00:09:13,040 --> 00:09:15,840
weil du meintest Attribute, also
die Felder die du ausfüllen 

171
00:09:15,840 --> 00:09:18,600
kannst. 
Unterschiedlich ausfüllen kannst

172
00:09:18,600 --> 00:09:21,440
dann auch noch, das ist n ganz 
wichtiger Punkt dabei, du 

173
00:09:21,440 --> 00:09:25,600
kopierst quasi sozusagen diesen 
Rohling und das ist der Prototyp

174
00:09:25,600 --> 00:09:27,760
dahinter. 
Ja, also du hast n Prototyp von 

175
00:09:27,760 --> 00:09:31,160
diesem Vordruck, den kannst du 
kopieren und du kannst aber die 

176
00:09:31,160 --> 00:09:35,120
Eigenschaften die Echten des 
Objektes also auf dem Blatt 

177
00:09:35,360 --> 00:09:38,760
natürlich noch variieren, das 
heißt da steht dann nicht immer 

178
00:09:38,760 --> 00:09:40,840
der gleiche Name schon 
eingetragen drauf, sondern du 

179
00:09:40,840 --> 00:09:43,600
kannst halt bei dir schreibst du
den Fabi rauf und ich schreib da

180
00:09:43,600 --> 00:09:46,400
Tino rauf, zum Beispiel ne. 
Dann hab ich ne Kopie erzeugt, 

181
00:09:46,400 --> 00:09:48,720
aber ich kann es das Blatt 
unterschiedlich ausfüllen. 

182
00:09:48,800 --> 00:09:51,080
Du kannst theoretisch. 
Aber auch wenn du es jetzt noch 

183
00:09:51,080 --> 00:09:53,760
n bisschen weiter spinnst, auch 
sagen, OK, wenn du das jetzt am 

184
00:09:53,760 --> 00:09:56,200
heutigen Tag machst und das ist 
immer für den heutigen Tag, 

185
00:09:56,200 --> 00:09:58,240
kannst du theoretisch trotzdem 
aber auch n Attribut schon 

186
00:09:58,240 --> 00:10:00,960
eintragen, ne und mit kopieren 
wie zum Beispiel das Datum ne, 

187
00:10:01,120 --> 00:10:05,200
dass halt solche Sachen halt 
auch eben schon voreingetragen 

188
00:10:05,200 --> 00:10:06,640
hast, ne? 
Genau. 

189
00:10:06,640 --> 00:10:09,040
Also das ist dann halt im 
Prinzip, denn sag ich mal 

190
00:10:09,040 --> 00:10:12,000
Implementierungssache am Ende, 
wie man das machen möchte. 

191
00:10:12,240 --> 00:10:14,920
Du kannst ja auch sag ich mal 
die Werte übernehmen und. 

192
00:10:15,360 --> 00:10:18,240
Und sie aber trotzdem im 
Nachhinein noch ändern können. 

193
00:10:18,400 --> 00:10:20,640
Das werden wir gleich im 
technischen Teil mal so n 

194
00:10:20,640 --> 00:10:23,120
bisschen erläutern, was man 
dafür braucht um sowas zu 

195
00:10:23,120 --> 00:10:25,200
ermöglichen. 
Ich hab auch noch ne andere 

196
00:10:25,200 --> 00:10:28,000
Analogie gefunden bei der 
Recherche und die fand ich halt 

197
00:10:28,000 --> 00:10:31,920
extrem witzig und zwar sollte 
man sich da eine Schaffarm 

198
00:10:31,920 --> 00:10:35,040
vorstellen oder das fand ich 
halt extrem cool, weil ich mir 

199
00:10:35,040 --> 00:10:37,080
sofort dachte, OK ich bin jetzt 
so auf einer Farm und das sind 

200
00:10:37,080 --> 00:10:41,440
so ganz ganz viele Schafe. 
Und da war halt geschrieben, ich

201
00:10:41,440 --> 00:10:44,240
glaube, das war ein Medium 
Artikel, also kann man auch 

202
00:10:44,240 --> 00:10:45,840
gerne mal recherchieren, der war
ganz cool. 

203
00:10:47,360 --> 00:10:49,600
Stell dir vor, du hast so ein 
perfektes Schaf, ne und ein 

204
00:10:49,600 --> 00:10:52,320
Schaf hat ja Eigenschaften, das 
hat eine gewisse Größe, 

205
00:10:52,320 --> 00:10:55,920
vielleicht so eine gewisse 
Flauschigkeit ja, aber vor allem

206
00:10:55,920 --> 00:11:00,320
auch Namen so und das Name ist 
ja schon sehr unique, sag ich 

207
00:11:00,320 --> 00:11:01,600
mal. 
Das heißt, das ist zum Beispiel 

208
00:11:01,600 --> 00:11:04,640
so ein Attribut, was du nicht 
übernehmen möchtest, sondern 

209
00:11:04,640 --> 00:11:06,920
abändern möchtest. 
Und jetzt stell dir vor, du hast

210
00:11:06,920 --> 00:11:09,160
so ein Prototyp scharf, so 
scharf. 

211
00:11:09,240 --> 00:11:12,160
Ali Sheep nennen wir das jetzt 
mal, und das hat so ganz, ganz 

212
00:11:12,160 --> 00:11:15,040
viele Eigenschaften. 
Ja, und die sind gut, also es 

213
00:11:15,040 --> 00:11:17,760
ist n gutes Schaf, es ist n 
super Prototypen und davon 

214
00:11:17,760 --> 00:11:20,720
möchtest du jetzt einfach 
mehrere Schafe ableiten. 

215
00:11:22,080 --> 00:11:25,760
Und warum möchtest du denn jetzt
quasi jedes Mal wieder n neues 

216
00:11:25,760 --> 00:11:29,160
Schaf sozusagen erstellen, wenn 
du doch dieses Schaf, diesen 

217
00:11:29,160 --> 00:11:31,440
Prototypen einfach mehrfach 
haben möchtest? 

218
00:11:31,440 --> 00:11:35,960
Ja, und dann klonst du das ich 
mein so scharfe Klonen OK, in 

219
00:11:35,960 --> 00:11:39,200
den letzten Jahren war oft n 
Thema, aber wir wir machen das 

220
00:11:39,200 --> 00:11:42,280
jetzt mal ganz abstrakt, ja. 
Und dann hat das Halt n anderen 

221
00:11:42,280 --> 00:11:44,080
Namen. 
Ja, dann hast du halt keine 

222
00:11:44,080 --> 00:11:47,560
Ahnung noch Toby allen und weiß 
ich wie sie alle heißen dann da 

223
00:11:47,560 --> 00:11:51,760
hast du so ganz viele Schafe, 
die quasi voneinander geklont 

224
00:11:51,760 --> 00:11:54,800
sind, aber doch ihre eigenen 
Eigenschaften noch haben. 

225
00:11:54,800 --> 00:11:58,960
Am Ende zum Beispiel den Namen 
und das kannst du natürlich mit 

226
00:11:58,960 --> 00:12:01,680
allen Schafen machen ne, also du
hast n großes Schaf was du 

227
00:12:01,680 --> 00:12:03,840
klonst. 
Du hast n graues Schaf, du hast 

228
00:12:04,360 --> 00:12:09,040
n Vampirschaf keine Ahnung was 
es auch immer für Schafe gibt, 

229
00:12:09,040 --> 00:12:13,240
ja. 
Und du kannst ja dann im Prinzip

230
00:12:13,240 --> 00:12:16,960
von jedem Schaf Klone erzeugen, 
wenn du das möchtest. 

231
00:12:17,280 --> 00:12:19,720
Oder jetzt mal allgemeiner von 
der Analogie weg. 

232
00:12:19,720 --> 00:12:22,720
Du hast Formulare gesagt, 
Formulare ist n gutes Beispiel, 

233
00:12:23,040 --> 00:12:27,040
gehen wir. 
Noch mal in die Richtung UI, 

234
00:12:27,040 --> 00:12:30,000
wenn du Komponenten hast, kannst
du auch Klone erzeugen, wenn du 

235
00:12:30,000 --> 00:12:32,840
sagst ich hab ne richtig coole 
UI Komponente und ich möchte die

236
00:12:32,840 --> 00:12:36,000
genauso wieder haben und ich 
möchte nicht die grundlegend 

237
00:12:36,000 --> 00:12:38,720
noch mal neu aufbauen, dann kann
ich das auch verwenden. 

238
00:12:38,720 --> 00:12:42,000
Das Pattern das ist n super 
Beispiel dafür oder? 

239
00:12:43,280 --> 00:12:46,640
N anderes Beispiel, wo es bei 
mir auch so Klick gemacht hat im

240
00:12:46,640 --> 00:12:48,840
Sinne von weil ich meinte das 
werden wir in Twitch vielleicht 

241
00:12:48,840 --> 00:12:51,280
mal gebrauchen, weil wir 
entwickeln ja für unsere 

242
00:12:51,280 --> 00:12:53,520
Programmierwettbewerbe immer 
kleine Spiele. 

243
00:12:53,520 --> 00:12:55,800
Ja, also unsere 
Programmierwettbewerbe basieren 

244
00:12:55,800 --> 00:13:00,480
ja meistens auf Spiele, dass man
n bot dafür schreibt und dieses 

245
00:13:00,480 --> 00:13:03,520
Pattern macht halt total Sinn, 
wenn du zum Beispiel n Spiel 

246
00:13:03,520 --> 00:13:05,600
hast, wo es ganz ganz viele 
Gegner gibt. 

247
00:13:05,680 --> 00:13:10,560
Du hast so Gegnertypen, ja, das 
ist so der Prototyp und davon 

248
00:13:10,560 --> 00:13:12,720
möchte ich aber jetzt ganz ganz 
viele erzeugen. 

249
00:13:13,080 --> 00:13:15,680
Da muss ich ja nicht jedes Mal 
neu definieren, wie genau dieser

250
00:13:15,680 --> 00:13:18,160
Gegner aussieht. 
Ich mein, da muss man also ich 

251
00:13:18,160 --> 00:13:20,960
denk da zum Beispiel sofort so 
an Tower Defence Spiele. 

252
00:13:21,040 --> 00:13:22,640
Ja. 
Ist bestimmt n Begriff bei dem 

253
00:13:22,640 --> 00:13:25,080
ein oder anderen. 
Da hast du ja da kommen ja 

254
00:13:25,080 --> 00:13:28,320
irgendwann. 
Massen an Gegnern vom gleichen 

255
00:13:28,320 --> 00:13:31,440
Typ auf dich zu und da würde es 
Sinn machen, dass du sagst, komm

256
00:13:31,440 --> 00:13:34,440
erzeug n Klon noch n Klon noch n
Klon, noch n Klon und so weiter 

257
00:13:34,440 --> 00:13:37,440
und dann kommen halt die 5 
Gegnertypen da von dem einen Typ

258
00:13:37,440 --> 00:13:40,240
allein angerannt sag ich mal ja.
Ich muss da also das. 

259
00:13:40,240 --> 00:13:43,000
Sind so Beispiele wo ich. 
Muss da mal relativ schnell 

260
00:13:43,000 --> 00:13:46,080
irgendwie oder was mir als 
erstes bei Gaming und dem 

261
00:13:46,080 --> 00:13:47,840
Prototype Pattern eingefallen 
ist. 

262
00:13:48,080 --> 00:13:50,320
Ich weiß nicht ob du das kennst.
Bestimmt, wenn du jetzt 

263
00:13:50,320 --> 00:13:53,280
irgendwie so Gegnertypen hast 
und du machst jetzt zum Beispiel

264
00:13:53,280 --> 00:13:55,800
ein Blatt davon. 
Ja, und manchmal gibt es ja so 

265
00:13:55,800 --> 00:13:57,760
in so spielen so Gegner, die 
sich dann so aufteilen. 

266
00:13:57,760 --> 00:14:00,800
Ne, also du machst quasi einen 
Gegner platt und dann kommt der 

267
00:14:00,800 --> 00:14:03,920
irgendwie, also der ist dann 
hinüber und dann kommen 

268
00:14:04,000 --> 00:14:07,920
sozusagen spawnen auf einmal aus
diesem Gegner, den du platt 

269
00:14:07,920 --> 00:14:09,680
gemacht hast. 
Noch mal 3 von diesen Gegnern, 

270
00:14:09,680 --> 00:14:13,360
aber kleiner ne so und dann hast
du ja im Endeffekt auch so ne 

271
00:14:13,360 --> 00:14:15,920
Art nutz könntest du ja hier an 
der Stelle auch so ne Art 

272
00:14:15,920 --> 00:14:20,560
prototypepad da benutzen, weil 
du sagst du der eine Gegner der 

273
00:14:20,560 --> 00:14:24,880
verschwindet sozusagen aber du. 
Klonst quasi noch mal 3 davon, 

274
00:14:25,040 --> 00:14:27,120
aber mit zum Beispiel dem 
Attribut. 

275
00:14:28,000 --> 00:14:33,200
Die Größe ist nur 0,5 davon und 
der Angriff von dem Gegner ist 

276
00:14:33,200 --> 00:14:36,400
aber jetzt auch nur noch n 
Drittel davon ne oder was auch 

277
00:14:36,400 --> 00:14:41,080
immer und so weiter dass du halt
genau diesen Gegner noch mal 

278
00:14:41,080 --> 00:14:43,440
nimmst. 
Aber halt eben also du klonst 

279
00:14:43,440 --> 00:14:46,680
die Attribute. 
Nimmst das noch mal und 

280
00:14:46,680 --> 00:14:48,440
veränderst vielleicht n bisschen
ne, also dass vielleicht die 

281
00:14:48,440 --> 00:14:49,920
Lebenspunkte sind n bisschen 
weniger. 

282
00:14:49,920 --> 00:14:52,040
Der Angriff ist n bisschen 
weniger und die Größe ist n 

283
00:14:52,040 --> 00:14:54,080
bisschen weniger, aber 
prinzipiell ist es immer noch 

284
00:14:54,320 --> 00:14:58,200
sozusagen n ursprungsklon ne von
also oder n Klon von dem 

285
00:14:58,200 --> 00:15:01,120
ursprungsgegner sag ich genau. 
Du hast halt im Prinzip die 

286
00:15:01,120 --> 00:15:04,720
gleiche Ausgangsbasis, ne wie 
gesagt, also egal wieviel 

287
00:15:04,720 --> 00:15:08,400
Attribute das am Ende sind, die 
man da noch verändern kann oder 

288
00:15:08,400 --> 00:15:10,400
personalisieren kann, nenn ich 
es mal ja. 

289
00:15:10,880 --> 00:15:13,280
Wie zum Beispiel den Namen auch.
Einfach jetzt bei dem 

290
00:15:13,280 --> 00:15:16,440
Schafbeispiel ne, das ist halt n
ganz essentieller Punkt, dass du

291
00:15:16,440 --> 00:15:19,800
diese Möglichkeit hast. 
Und ich find es gut, wenn wir 

292
00:15:19,800 --> 00:15:23,680
bei dem Thema sind, dann lass 
uns doch mal so technisch da 

293
00:15:23,680 --> 00:15:26,000
drauf gucken. 
Also ich glaube man kann sich 

294
00:15:26,000 --> 00:15:29,280
jetzt ganz gut vorstellen, was 
dieses Pattern bezweckt und was 

295
00:15:29,280 --> 00:15:31,880
der Vorteil dabei ist. 
Aber wie kann man das denn jetzt

296
00:15:31,880 --> 00:15:34,800
als Designpattern, wie sieht das
Designpattern dahinter aus, wie 

297
00:15:34,800 --> 00:15:38,000
kann man das technisch umsetzen?
Und wieso? 

298
00:15:38,000 --> 00:15:41,040
Oft sind wir da wieder in der 
Objektorientierung unterwegs, 

299
00:15:41,040 --> 00:15:45,840
wie bei den bisherigen Pattern 
auch und im Prinzip startet 

300
00:15:45,840 --> 00:15:48,640
alles wieder damit, dass du 
sagst, OK, ich erzeuge mir 

301
00:15:48,640 --> 00:15:52,640
erstmal ein Interface Mhm oder 
eine Basisklasse, aber gehen wir

302
00:15:52,640 --> 00:15:57,120
mal von dem Interface aus und 
dieses Interface muss im Prinzip

303
00:15:57,120 --> 00:16:00,640
eine clone Methode beinhalten. 
Ja. 

304
00:16:01,800 --> 00:16:04,640
Ja, also du kannst auch 
natürlich noch mehr reinpacken, 

305
00:16:04,640 --> 00:16:06,480
wenn du jetzt zum Beispiel 
sagst, nee, aber über das 

306
00:16:06,480 --> 00:16:09,840
Interface möchte ich auch 
definieren, dass ich Attribute 

307
00:16:09,840 --> 00:16:12,880
ändern kann zum Beispiel, oder 
also, dass du das Fest 

308
00:16:12,880 --> 00:16:15,440
vorschreiben möchtest. 
Wie auch immer, das ist halt 

309
00:16:15,440 --> 00:16:18,000
nachher die die 
Implementierungsfreiheit was 

310
00:16:18,000 --> 00:16:21,000
will ich genau alles 
festschreiben, aber fangen wir 

311
00:16:21,000 --> 00:16:24,640
ganz simpel an und sagen, es 
gibt ne clone Methode, die muss 

312
00:16:24,640 --> 00:16:28,320
implementiert werden, wenn ich 
beispielsweise meine Klasse 

313
00:16:28,320 --> 00:16:33,600
scharf klonen möchte, dann. 
Muss ich sagen, diese klasse 

314
00:16:33,600 --> 00:16:38,000
Schaf implementiert dieses 
Interface und muss damit ja ne 

315
00:16:38,000 --> 00:16:42,000
clone Methode bereitstellen. 
Mhm, das ist ja der Sinn erstmal

316
00:16:42,000 --> 00:16:46,480
dahinter, weil dann zwingst du 
quasi den Entwickler drüber sich

317
00:16:46,480 --> 00:16:49,040
darüber Gedanken zu machen, wie 
muss denn ne clone Methode 

318
00:16:49,040 --> 00:16:54,560
aussehen um ein exakte Kopie des
Schafes zu erstellen sozusagen? 

319
00:16:54,560 --> 00:16:56,400
Also du kannst ja rein 
theoretisch, kannst ja auch, 

320
00:16:56,440 --> 00:16:59,200
also jetzt muss ja nicht clone 
heißen, ne, aber es macht in dem

321
00:16:59,200 --> 00:17:01,920
Fall natürlich Sinn. 
Ist so, dass es Clone heißt, 

322
00:17:02,240 --> 00:17:03,640
aber kann es natürlich auch 
anders benennen. 

323
00:17:03,640 --> 00:17:05,040
Ne, so wie du wie du es willst 
rein. 

324
00:17:05,040 --> 00:17:07,760
Theoretisch so n bisschen Best 
Practice, sag ich mal genau oder

325
00:17:07,760 --> 00:17:09,920
so so standardmäßig vom Design 
Pattern. 

326
00:17:10,079 --> 00:17:13,200
Ja, aber prinzipiell ist es halt
eigentlich nichts weiter als n 

327
00:17:13,200 --> 00:17:15,280
ganz normales Interface. 
Also wir hatten ja Interface 

328
00:17:15,280 --> 00:17:18,640
auch schon mal in einer Pattern 
Folge besprochen, was genau n 

329
00:17:18,640 --> 00:17:20,760
Interface ist. 
Im Endeffekt ist es jetzt nichts

330
00:17:20,760 --> 00:17:23,440
anderes ne, also es ist 
sozusagen einfach n Konstrukt 

331
00:17:23,440 --> 00:17:26,400
wie man es baut, also so n 
Design pattern ne, aber du 

332
00:17:26,960 --> 00:17:30,120
kannst ja überall im Endeffekt 
wieder, also in vielen auch 

333
00:17:30,120 --> 00:17:31,560
Infekten. 
Repattern wird ja zum Beispiel 

334
00:17:31,560 --> 00:17:34,120
auch ein Interface verwendet und
dann ist es halt im Endeffekt 

335
00:17:34,120 --> 00:17:37,560
nur die Frage, so wie genau 
implementierst du das, was sind 

336
00:17:37,560 --> 00:17:40,520
Best practices, dass es 
sozusagen diesen Prototype 

337
00:17:40,520 --> 00:17:44,800
Pattern von der Idee her matcht,
ne, aber wenn du dir das so 

338
00:17:44,800 --> 00:17:48,080
vorstellst, hast du ja im 
Interface auch eigentlich nur am

339
00:17:48,080 --> 00:17:51,840
Ende, wenn das Interface, ich 
nenn es jetzt mal Fahrzeug ist, 

340
00:17:51,840 --> 00:17:54,040
dann kann ja alles Mögliche 
rauskommen, also ein Fahrzeug 

341
00:17:54,040 --> 00:17:57,360
kann ja alles Mögliche sein, 
aber dieses Clone selber gibt am

342
00:17:57,360 --> 00:18:00,440
Ende ja nur ein Fahrzeug zurück,
beispielsweise was ja? 

343
00:18:00,560 --> 00:18:04,200
Dann am Ende in der konkreten 
Implementierung ja wiederum 

344
00:18:04,200 --> 00:18:06,800
wirklich NN Auto oder Motorrad 
oder sowas sein. 

345
00:18:06,800 --> 00:18:09,560
Kann ne mal als Beispiel. 
Das hat halt den Sinn und da ist

346
00:18:09,560 --> 00:18:12,080
vielleicht jetzt der Punkt, wo 
man, gerade wenn man sich am, 

347
00:18:12,080 --> 00:18:14,520
also am Anfang befindet und sich
mit solchen Pattern 

348
00:18:14,520 --> 00:18:17,120
auseinandersetzt, wo? 
Gerade bei mir auch früher sag 

349
00:18:17,120 --> 00:18:19,720
ich mal im Studium so n bisschen
so n Knoten im Kopf entstanden 

350
00:18:19,720 --> 00:18:22,040
ist. 
Wichtig hierbei ist, warum macht

351
00:18:22,040 --> 00:18:24,240
man das, weil es klingt jetzt 
vielleicht komisch, wir haben 

352
00:18:24,240 --> 00:18:27,000
gesagt, OK jetzt jetzt hab ich 
zum Beispiel geh ich ich nehm 

353
00:18:27,000 --> 00:18:29,000
noch mal das schafbeispiel ne 
ich hab jetzt n Schaf und das 

354
00:18:29,000 --> 00:18:32,160
implementiert jetzt mein 
Interface sozusagen dieses 

355
00:18:32,160 --> 00:18:35,360
Prototypen Interface ne sheep 
also einfach n sheep dann so ne 

356
00:18:35,520 --> 00:18:38,680
und ich hab jetzt mein Grey 
Sheep, mein graues Schaf 

357
00:18:38,680 --> 00:18:42,800
sozusagen und es ist natürlich 
komisch dann zu sagen ich ruf 

358
00:18:42,800 --> 00:18:45,120
Klon auf und Klon gibt 
natürlich. 

359
00:18:45,520 --> 00:18:48,480
Sheep dann zurück, so wie auch 
der das Interface ist. 

360
00:18:49,040 --> 00:18:52,880
Aber das hat den Grund, dass 
wenn ich es von außen verwende, 

361
00:18:53,120 --> 00:18:57,520
ja zum Beispiel auf meiner Sheep
Farm möchte ich eigentlich gar 

362
00:18:57,520 --> 00:18:59,840
nicht wissen, was das genau für 
n Schaf ist. 

363
00:19:00,080 --> 00:19:02,720
Das ist für mich nur n Prototyp.
Also es ist halt wirklich nur 

364
00:19:02,720 --> 00:19:07,000
ein Schaf was dieses Interface 
implementiert und mir ist zum 

365
00:19:07,000 --> 00:19:08,880
Beispiel nur wichtig, dass ich 
es klonen kann. 

366
00:19:09,360 --> 00:19:12,160
Ja, wenn man diese. 
Clone Funktion aufrufen kann. 

367
00:19:12,160 --> 00:19:14,080
Genau. 
Also nehmen wir mal an, du hast 

368
00:19:14,080 --> 00:19:18,880
jetzt zum Beispiel n Spiel und 
du bist auf einer Farm und hast 

369
00:19:18,880 --> 00:19:22,160
da so Schafe und du hattest ja 
von von einem Vampirschaf 

370
00:19:22,160 --> 00:19:24,960
geredet und wenn du jetzt zum 
Beispiel so als dein klassisch 

371
00:19:25,600 --> 00:19:29,200
klassisch als dein Character 
durch die Gegend läufst, ne und 

372
00:19:29,440 --> 00:19:31,360
du. 
Du sagst zum Beispiel, OK, du 

373
00:19:32,000 --> 00:19:33,520
haust. 
Kannst du mich auf n Schaf 

374
00:19:33,520 --> 00:19:35,280
hauen? 
Wie auch immer ne und so n 

375
00:19:35,280 --> 00:19:39,040
Vampirschaf beispielsweise das 
verdoppelt sich in der Nacht 

376
00:19:39,040 --> 00:19:42,920
oder keine Ahnung wird wird 
quasi wenn du es haust ne wenn 

377
00:19:42,920 --> 00:19:44,560
du es haust. 
Und wenn du aber jetzt zum 

378
00:19:44,560 --> 00:19:47,200
Beispiel am am Tag des Haust, 
dann verschwindet es, dann hast 

379
00:19:47,200 --> 00:19:48,960
du es wirklich sozusagen 
besiegt, aber wenn du es in der 

380
00:19:48,960 --> 00:19:51,680
Nacht machst verdoppelt es sich,
dann willst du ja eigentlich 

381
00:19:51,680 --> 00:19:54,800
rein theoretisch gar nicht 
programmatisch sozusagen auf 

382
00:19:54,800 --> 00:19:58,000
programmierebene wissen, auf 
welches Schaf haust du da 

383
00:19:58,000 --> 00:20:00,200
gerade, sondern wenn du da. 
Drauf haust. 

384
00:20:00,200 --> 00:20:01,680
Dann soll es sich halt 
verdoppeln. 

385
00:20:01,840 --> 00:20:04,640
Ne so also geklont werden 
sozusagen ne, also da soll 

386
00:20:04,640 --> 00:20:08,280
sozusagen noch ein eine Instanz 
genau mit den gleichen 

387
00:20:08,280 --> 00:20:12,080
Attributen von diesem Schaf 
erstellt werden, ne und 

388
00:20:12,880 --> 00:20:16,880
demzufolge ist es halt was du 
meintest ne es es interessiert 

389
00:20:16,880 --> 00:20:21,280
dich nicht, ich fand das früher 
immer so schwierig zu sagen es 

390
00:20:21,280 --> 00:20:24,480
interessiert dich an der Stelle 
nicht was du da hast und Und 

391
00:20:24,480 --> 00:20:25,600
dann habe ich mich immer 
gefragt. 

392
00:20:25,760 --> 00:20:28,400
Ich verstehe, also weißt du so 
früher so im Studium, dachte ich

393
00:20:28,400 --> 00:20:31,040
immer so, wieso sollte mich das 
nicht interessieren, ich weiß 

394
00:20:31,040 --> 00:20:33,840
doch aber eigentlich immer genau
was ich habe, ne, aber wenn du 

395
00:20:33,840 --> 00:20:36,240
jetzt zum Beispiel wirklich zur 
Laufzeit bei so einem Spiel. 

396
00:20:36,960 --> 00:20:40,120
Irgendeinen Typen vor dir hast, 
dann weißt du das zwar als 

397
00:20:40,120 --> 00:20:43,680
Spieler selber, das siehst du 
natürlich, aber der Algorithmus 

398
00:20:43,760 --> 00:20:46,880
ja, also der der Code, der dann 
gerade da an dieser Stelle ist, 

399
00:20:46,960 --> 00:20:49,640
der weiß es ja nicht unbedingt, 
der denkt sich so k. 

400
00:20:49,640 --> 00:20:51,840
Ich hab hier ein Objekt und das 
ist irgendwie n Schaf und wenn 

401
00:20:51,840 --> 00:20:55,360
das passiert, dann muss ich halt
n Copy aufrufen so ne und dann 

402
00:20:55,360 --> 00:20:57,840
muss das Halt funktionieren oder
klonen in dem Fall sorry. 

403
00:20:58,720 --> 00:21:01,600
Ja, also es ist halt genau 
dieses Konzept der Entkopplung. 

404
00:21:01,600 --> 00:21:04,960
Ne, also dass du quasi die 
Aufrufe und die Logik davon 

405
00:21:05,360 --> 00:21:08,720
entkoppelst von der eigentlichen
Erstellung und von dem Objekt 

406
00:21:08,720 --> 00:21:11,120
selbst. 
Und das ist am Anfang halt immer

407
00:21:11,120 --> 00:21:12,760
so. 
N kleiner Knoten im Kopf muss 

408
00:21:12,760 --> 00:21:15,440
ich wirklich sagen, aber genau 
der Sinn steckt halt dahinter. 

409
00:21:15,440 --> 00:21:18,880
Ne, dass du das Entkoppelst, 
weil es dich nicht interessieren

410
00:21:18,880 --> 00:21:20,880
muss. 
Ja, das ist halt wichtig. 

411
00:21:20,880 --> 00:21:24,000
Es musst, du musst nicht das 
wissen da drüber haben, um es 

412
00:21:24,000 --> 00:21:27,200
verwenden zu können. 
Ich fand deine Formularidee als 

413
00:21:27,200 --> 00:21:30,440
Beispiel ganz cool und noch so 
ne weitere Analogie, die glaub 

414
00:21:30,440 --> 00:21:34,080
ich auch jeder schon mal 
verwendet hat, so so gerade in 

415
00:21:34,080 --> 00:21:37,600
der Schulzeit so wenn du mit 
powerpoint so Vorträge gemacht 

416
00:21:37,600 --> 00:21:43,240
hast, ne und so n Slide kopieren
ist am Ende, wie auch immer es 

417
00:21:43,240 --> 00:21:46,160
implementiert ist, aber vom 
Grundgedanken dahinter, ja es 

418
00:21:46,480 --> 00:21:48,560
ist auch nichts anderes, du hast
so n Slide. 

419
00:21:49,200 --> 00:21:52,400
Zum Beispiel mit so einem 
fertigen Design, ne, also so n 

420
00:21:52,400 --> 00:21:55,440
keine Ahnung, so n Header n 
Footer sieht richtig schön aus, 

421
00:21:55,440 --> 00:21:59,360
hast dir so richtig Mühe gegeben
und dann kopierst du das erstmal

422
00:21:59,360 --> 00:22:03,160
und tauscht dann quasi den 
Content sozusagen aus und das 

423
00:22:03,160 --> 00:22:07,680
ist ja im Prinzip auch wieder so
n Anwendungsfall am Ende um da 

424
00:22:07,680 --> 00:22:13,840
noch mal so n weiteres Beispiel 
zu geben, die Frage ist nur wann

425
00:22:14,080 --> 00:22:16,040
macht es Sinn? 
Wir haben ja gesagt, zum 

426
00:22:16,040 --> 00:22:18,160
Beispiel bei dem Kopieren der 
Blätter. 

427
00:22:18,320 --> 00:22:21,200
Absolut sinnvoll, macht gar 
keinen Sinn, das immer neu zu 

428
00:22:21,200 --> 00:22:25,120
schreiben, ja, oder bei dem bei 
den Slides jetzt oder bei 

429
00:22:25,120 --> 00:22:27,120
unserer Schafsfarm ja, da kann 
man vielleicht noch 

430
00:22:27,120 --> 00:22:30,160
argumentieren, ah nee, ist 
vielleicht doch besser, jedes 

431
00:22:30,160 --> 00:22:33,600
Schaf individuell zu machen oder
so oder bei den Gegnertypen ja, 

432
00:22:34,480 --> 00:22:39,200
aber wäre in Spielen halt auch n
Anwendungsfall, wie könnte man 

433
00:22:39,200 --> 00:22:43,680
das mal so ganz allgemein 
runterbrechen, was sagst du aus 

434
00:22:43,680 --> 00:22:46,760
deiner Sicht? 
Wann ist dieses Pattern 

435
00:22:46,760 --> 00:22:51,760
geeignet? 
Ja, also ich würde schon sagen, 

436
00:22:51,760 --> 00:22:56,840
im Endeffekt, wenn du jetzt also
grundprämisse würde ich sagen, 

437
00:22:56,840 --> 00:23:01,440
ist wenn du ein Objekt hast, was
vielleicht unglaublich viele 

438
00:23:01,440 --> 00:23:05,680
Attribute hat, ne, also wenn du 
jetzt zum Beispiel sagst, die 

439
00:23:05,680 --> 00:23:09,520
Erzeugung von so einem Objekt 
ist relativ komplex, ist relativ

440
00:23:09,520 --> 00:23:14,240
teuer in Anführungsstrichen. 
Weil im Endeffekt ist es ja so, 

441
00:23:14,240 --> 00:23:18,480
dass du, ich hatte mich zum 
Beispiel auch mal gefragt, OK, 

442
00:23:18,480 --> 00:23:21,920
du hast jetzt entweder n du 
machst n Copy ne beispielsweise 

443
00:23:21,920 --> 00:23:25,840
und in diesem Copy passiert ja 
an sich eigentlich under The 

444
00:23:25,840 --> 00:23:29,520
Hood auch nichts anderes, als 
dass du sagst, du Erzeugst mit 

445
00:23:29,520 --> 00:23:31,840
einem New irgendwie n 
konstruktor du, du nimmst 

446
00:23:31,840 --> 00:23:33,920
irgendwie dieses Objekt und 
machst damit irgendwas. 

447
00:23:33,920 --> 00:23:38,240
Könntest du zum Beispiel tun, 
ne, ist ja ne Möglichkeit, aber 

448
00:23:38,240 --> 00:23:41,640
was du halt. 
Also das wäre ja im Endeffekt 

449
00:23:41,640 --> 00:23:42,880
so. 
Kannst ja sagen, ja OK, machst n

450
00:23:42,880 --> 00:23:46,080
Copy und n New oder du machst n 
New mit den Attributen und am 

451
00:23:46,080 --> 00:23:47,800
Ende ist es halt irgendwie das 
gleiche. 

452
00:23:47,800 --> 00:23:52,480
Also wie du jetzt dieses Copy ne
und auf der einen Seite hatten 

453
00:23:52,480 --> 00:23:55,840
wir gesagt OK wir haben halt 
eben diese diese Art von von 

454
00:23:55,840 --> 00:23:59,440
diesem Interface was man dann 
halt eben ne wo man das gut 

455
00:23:59,440 --> 00:24:02,080
gekapselt hat am Ende und nicht 
wissen muss was es ist. 

456
00:24:02,080 --> 00:24:05,520
Aber und jetzt find ich das das 
kommt noch n top wenn du jetzt 

457
00:24:05,520 --> 00:24:07,520
zum Beispiel weil ich ja auch 
gesagt hab teuer ne. 

458
00:24:08,200 --> 00:24:11,040
Wenn du jetzt zum Beispiel n 
Konstruktor hast oder so ne und 

459
00:24:11,040 --> 00:24:14,720
und da passieren viele 
Initialisierungsdinge ne, also 

460
00:24:14,720 --> 00:24:18,000
sagen wir mal du willst n 
bestimmtes Attribut erstellen, 

461
00:24:18,000 --> 00:24:21,520
musst aber erstmal n paar 
Berechnungen anstellen um halt 

462
00:24:21,520 --> 00:24:25,920
eben wirklich den richtigen Wert
für dieses Attribut zu bekommen,

463
00:24:26,400 --> 00:24:29,280
dann musst du diese ganzen 
Berechnungen, die du für dieses 

464
00:24:29,280 --> 00:24:33,280
entsprechende Attribut brauchst,
halt nicht mehr unbedingt 

465
00:24:33,280 --> 00:24:35,680
berechnen, weil du zum Beispiel 
weißt, OK, dieses Attribut 

466
00:24:35,680 --> 00:24:40,240
übernehme ich einfach von. 
Dem Prototypen ne, also von dem 

467
00:24:40,240 --> 00:24:43,520
was ich vorher schon hatte und 
kann es einfach klonen dann und 

468
00:24:43,520 --> 00:24:46,960
muss halt nicht extra noch 
diesen ganzen Overhead sozusagen

469
00:24:46,960 --> 00:24:50,320
machen. 
Ne und das ist dann finde ich 

470
00:24:50,480 --> 00:24:53,880
meiner Meinung nach n großer 
Punkt der einem sagt da macht es

471
00:24:53,880 --> 00:24:55,360
irgendwie Sinn weißt. 
Du ja. 

472
00:24:55,440 --> 00:24:59,360
Und im Umkehrschluss ist das 
genau, wenn genau das Gegenteil 

473
00:24:59,360 --> 00:25:02,040
der Fall ist, auch schon der 
Grund, wann es ungeeignet ist. 

474
00:25:02,040 --> 00:25:05,240
Wenn ich jetzt zum Beispiel sehr
simple Objekte hab, ne mit einem

475
00:25:05,240 --> 00:25:06,960
Parameter zum Beispiel die 
wirklich. 

476
00:25:07,240 --> 00:25:10,800
Sich kaum unterscheiden, außer 
auf abgesehen von einem Attribut

477
00:25:10,800 --> 00:25:13,080
zum Beispiel. 
Ja dann habe ich halt nicht 

478
00:25:13,080 --> 00:25:17,120
wirklich einen Vorteil gegenüber
der Instanziierung durch New 

479
00:25:17,120 --> 00:25:19,600
beispielsweise, ja weißt. 
Du, das ist ein wichtig. 

480
00:25:19,600 --> 00:25:21,600
Neues Objekt anlegen? 
Was denn? 

481
00:25:21,920 --> 00:25:24,560
Ich finde es immer schwierig, 
dass meistens ja genau solche 

482
00:25:25,760 --> 00:25:27,040
bei. 
Also wenn du jetzt ein Beispiel 

483
00:25:27,040 --> 00:25:30,320
hast, ne und jemand erklärt das 
daran, dann finde ich macht es 

484
00:25:30,320 --> 00:25:32,960
total Sinn das einem kleinen 
Beispiel zu erklären und zu 

485
00:25:32,960 --> 00:25:35,440
sagen Na ja guck mal, aber so 
sieht es ungefähr aus. 

486
00:25:36,760 --> 00:25:39,240
Und dann hast du n kleines 
Beispiel, was übersichtlich ist,

487
00:25:39,240 --> 00:25:41,360
woran du verstehst. 
Und. 

488
00:25:42,000 --> 00:25:44,320
Dann kommt aber auf der anderen 
Seite wieder so. 

489
00:25:44,560 --> 00:25:47,160
Ja, aber mach das nicht bei 
kleinen Sachen, mach das nicht, 

490
00:25:47,160 --> 00:25:49,200
wenn der Konstruktor einfach ist
und dann. 

491
00:25:49,600 --> 00:25:51,600
Also für mich war das auch 
manchmal so früher als ich mir 

492
00:25:51,600 --> 00:25:55,200
dachte, so Alter hä, warum 
nimmst du denn dieses Beispiel 

493
00:25:55,200 --> 00:25:57,360
dafür? 
Ne, wenn es doch sogar nicht 

494
00:25:57,360 --> 00:25:59,520
dafür geeignet ist? 
Ne, aber es ist halt. 

495
00:26:00,040 --> 00:26:02,800
Aber da ist halt wie gesagt, das
was hast du gesagt Finanzamt 

496
00:26:02,880 --> 00:26:05,360
Formular n gutes Beispiel weil 
das willst du halt nicht jedes 

497
00:26:05,360 --> 00:26:09,200
Mal neu schreiben, richtig ja 
aber genau das ist halt der 

498
00:26:09,200 --> 00:26:12,240
Grund der wenn es ungeeignet ist
wenn es halt einfach zu simpel 

499
00:26:12,240 --> 00:26:16,320
ist oder es kann komplex sein 
aber es gibt einfach keine 

500
00:26:16,320 --> 00:26:18,800
einheitliche Modellierung die 
dahinter steckt also. 

501
00:26:19,200 --> 00:26:22,080
Es. 
Gibt quasi nicht keine klare 

502
00:26:22,080 --> 00:26:24,880
Struktur, die ich ableiten und 
wiederverwenden möchte 

503
00:26:24,880 --> 00:26:27,320
sozusagen. 
Also es macht einfach keinen 

504
00:26:27,320 --> 00:26:30,000
Sinn, einen Klon zu erzeugen. 
Ja, also wenn ich sehr, sehr 

505
00:26:30,000 --> 00:26:33,760
dynamische Objekte hab, wo keine
Grundmodellierung dahinter 

506
00:26:33,760 --> 00:26:37,360
steckt, wie beispielsweise wir 
ja gesagt haben, Gegnertypen, 

507
00:26:37,360 --> 00:26:41,600
wenn ich mehrere davon haben 
möchte, macht das absolut Sinn 

508
00:26:41,600 --> 00:26:43,600
die zu klonen. 
Wenn ich aber jetzt keine 

509
00:26:43,600 --> 00:26:46,960
Ahnung, jeder ist total 
dynamisch, ja, also irgendwie. 

510
00:26:48,240 --> 00:26:50,320
Weiß ich nicht. 
Also in den Grundeigenschaften 

511
00:26:50,320 --> 00:26:52,840
völlig verschieden, dann brauch 
ich da nichts klonen, wenn ich 

512
00:26:52,840 --> 00:26:55,520
danach eh wieder alles 
ummodelliere sozusagen. 

513
00:26:55,520 --> 00:26:57,240
Das macht dann halt gar keinen 
Sinn, ja. 

514
00:26:57,240 --> 00:26:59,880
Richtig. 
Und ja, das sind eigentlich 

515
00:26:59,880 --> 00:27:02,800
wirklich die Kernpunkte, wo man 
entscheiden muss. 

516
00:27:02,880 --> 00:27:06,320
Macht dieses Pattern für mich 
jetzt Sinn oder nicht genau das 

517
00:27:06,320 --> 00:27:10,400
daran quasi festzumachen, eine 
Sache, die ich aber mit dir 

518
00:27:10,400 --> 00:27:12,640
besprechen möchte, weil das ist 
n Stolperstein. 

519
00:27:14,040 --> 00:27:16,480
Der hat es in sich und da wird 
jeder mal drüber stolpern. 

520
00:27:16,480 --> 00:27:20,000
Weil aber auch so im Sinne von, 
du findest dann irgendwann den 

521
00:27:20,000 --> 00:27:23,200
Fehler und denkst dir, ah ja 
klar, verdammt ist mir schon so 

522
00:27:23,200 --> 00:27:27,600
oft passiert und zwar möchte ich
über diese Copy falle über das 

523
00:27:27,600 --> 00:27:31,760
Problem mit dir sprechen und 
zwar den Unterschied zwischen 

524
00:27:31,760 --> 00:27:38,800
einem Cello und einem deep Copy 
Entschuldigung Copy ja also 

525
00:27:38,880 --> 00:27:42,320
Cello oder deep Copy so. 
Ja, wir hatten ja auch bei der 

526
00:27:42,320 --> 00:27:45,760
Reihe auch gesagt, dass wir ja 
auch immer gucken wollen, wann 

527
00:27:45,760 --> 00:27:48,640
lohnt es sich und wann lohnt es 
sich nicht oder vielleicht auch 

528
00:27:48,640 --> 00:27:52,240
was für Gemeinheiten. 
Gibt es da vielleicht ne oder 

529
00:27:52,240 --> 00:27:55,520
was für Begrenzungen oder wo man
halt drauf achten muss und das 

530
00:27:55,520 --> 00:27:58,920
ist auf jeden Fall n guter n 
guter Punkt, was ist denn jetzt 

531
00:27:58,920 --> 00:28:00,400
n? 
Also weil du jetzt gesagt hast 

532
00:28:00,560 --> 00:28:04,080
Shadow und deep Copy ne, was ist
denn das erstmal grob, dass wir 

533
00:28:04,080 --> 00:28:08,160
einmal auf n ja. 
Also im Prinzip kann man das. 

534
00:28:09,000 --> 00:28:11,520
Also ich stell mir das so vor 
beziehungsweise wenn ich jetzt 

535
00:28:11,520 --> 00:28:14,160
Anwender bin ne. 
Also ich hab jetzt quasi 

536
00:28:14,320 --> 00:28:18,400
beziehungsweise der Entwickler 
hat das Prototype Pattern 

537
00:28:18,400 --> 00:28:21,760
verwendet und ich habe jetzt 
Prototypen die ich kopieren kann

538
00:28:21,840 --> 00:28:24,760
ne und ich rufe jetzt einfach 
die copy Funktion auf und ich 

539
00:28:24,760 --> 00:28:27,040
denk mir so er ist ja sicher das
ist ja ne copy Funktion ich 

540
00:28:27,040 --> 00:28:31,240
krieg jetzt ne komplette Kopie 
von dem Objekt ich arbeite mit 

541
00:28:31,240 --> 00:28:34,480
dem beiden Ich rufe Funktionen 
auf auf dem einen Mal auf dem 

542
00:28:34,480 --> 00:28:37,200
anderen und hab auf einmal so 
komische Side Effects wo ich mir

543
00:28:37,200 --> 00:28:40,080
denke hä? 
Warte, warte mal, warte mal. 

544
00:28:40,080 --> 00:28:45,520
Ich hab ich hab jetzt irgendwie 
scharf 1 hab ich jetzt irgendwie

545
00:28:45,520 --> 00:28:48,160
n Halstuch vor fascal ich denk 
mir jetzt gerade irgendwas aus 

546
00:28:49,360 --> 00:28:52,240
und scharf zum Ei hat auf einmal
auch n Halstuch um was ist da 

547
00:28:52,240 --> 00:28:53,600
los? 
Beides schon das scharf. 

548
00:28:54,480 --> 00:28:57,920
Ja, so weißt du und du denkst 
dir so hä, ich hab ne Änderung 

549
00:28:57,920 --> 00:29:01,320
an scharf 1 gemacht. 
Und scharf 2 ist auch davon 

550
00:29:01,320 --> 00:29:02,720
betroffen. 
Das will ich doch gar nicht. 

551
00:29:02,760 --> 00:29:06,080
Es sind doch Kopien. 
Ja, es ist eine Kopie von scharf

552
00:29:06,080 --> 00:29:10,000
1, aber sie sind doch danach 
völlig unabhängig voneinander 

553
00:29:10,160 --> 00:29:13,080
und genau das ist der 
Knackpunkt, das zu erreichen ist

554
00:29:13,080 --> 00:29:15,920
halt nicht so trivial. 
Und da kommt jetzt das Problem, 

555
00:29:16,160 --> 00:29:21,120
der Unterschied Cello und deep 
Copy und zwar wenn ich eine 

556
00:29:21,120 --> 00:29:25,680
Kopie mache ja und standardmäßig
ist das immer ein Cello Copy, 

557
00:29:25,920 --> 00:29:28,800
das heißt ich kopiere einfach 
mein Objekt scharf. 

558
00:29:29,640 --> 00:29:34,160
Und das Schaf hat aber 
Attribute, die wiederum Objekte 

559
00:29:34,160 --> 00:29:39,920
sind ja, wie beispielsweise 
Listen, ja ja, Listen sind gute 

560
00:29:39,920 --> 00:29:44,720
Beispiele. 
So, dann kopiere ich zwar das 

561
00:29:44,720 --> 00:29:49,760
Schaf auch mit der Liste, aber 
nur die Referenz auf die Liste, 

562
00:29:50,480 --> 00:29:55,680
das heißt unter der Haube. 
Da hab ich jetzt 2 Schafe, die 

563
00:29:55,680 --> 00:29:59,080
auf die gleiche Liste verweisen 
und das ist n Stolperstein. 

564
00:29:59,080 --> 00:30:01,760
Da muss man das auch von Sprache
zu Sprache muss man halt gucken,

565
00:30:01,760 --> 00:30:04,200
ja wie das zu implementieren 
ist. 

566
00:30:04,200 --> 00:30:06,800
Aber das verbirgt sich halt 
hinter einem Cello, also 

567
00:30:06,800 --> 00:30:11,040
wirklich so n so n 
oberflächlicher Copy ne ganz 

568
00:30:11,040 --> 00:30:14,400
gute Analogie um das mal zu 
verstehen, ich hab n Notizbuch. 

569
00:30:14,920 --> 00:30:17,680
Ja, und ich guck mir das 
Notizbuch an, wenn es 

570
00:30:17,680 --> 00:30:19,840
geschlossen ist. 
Da sind jetzt die Seiten drin 

571
00:30:19,840 --> 00:30:23,200
beschrieben. 
Ich hab draußen quasi mein mein 

572
00:30:23,200 --> 00:30:28,280
mein Umschlag, sag ich mal so, 
ja, und ich kopiere das, dann 

573
00:30:28,280 --> 00:30:32,960
hab ich jetzt zweimal dieses 
Notizbuch, aber eigentlich hab 

574
00:30:32,960 --> 00:30:35,360
ich es nur oberflächlich 
kopiert, das heißt die Seiten da

575
00:30:35,360 --> 00:30:38,880
drin sind gleich, es sind die 
gleichen Seiten sozusagen. 

576
00:30:40,000 --> 00:30:42,960
Ja, und wenn ich jetzt auf der 
ersten Seite ne Zeile 

577
00:30:42,960 --> 00:30:47,120
durchstreiche, verweist das 
zweite Notizbuch genauso auf 

578
00:30:47,120 --> 00:30:48,960
diese Zeile und es wird 
automatisch damit 

579
00:30:48,960 --> 00:30:52,000
durchgestrichen. 
Das sind so Zaubernotizbücher 

580
00:30:52,000 --> 00:30:55,760
weißt du, ganz klar. 
Und das muss man sich halt so, 

581
00:30:55,760 --> 00:30:59,040
so physisch dahinter vorstellen,
dass ich halt die Seiten sind, 

582
00:30:59,040 --> 00:31:01,920
die gleichen. 
Ich habe nur n Notizbuch 

583
00:31:01,920 --> 00:31:05,120
erzeugt, wo quasi die gleichen 
Seiten drin abgebildet sind, 

584
00:31:05,200 --> 00:31:08,720
aber eigentlich hab ich nur von 
außen ne wirkliche Kopie erzeugt

585
00:31:09,040 --> 00:31:14,160
und jetzt das ist deep Copy, ja 
musst du dir vorstellen, dass 

586
00:31:14,160 --> 00:31:17,920
ich jetzt sage, diese Liste die 
ich hab da drin zum Beispiel die

587
00:31:17,920 --> 00:31:22,280
Seiten, die kopier ich jetzt 
wirklich, also ich erzeuge ne 

588
00:31:22,280 --> 00:31:26,080
neue Liste. 
Die ich in meine Kopie gebe, 

589
00:31:26,480 --> 00:31:28,880
gerne mit dem Inhalt der Seiten.
Ich soll ja nicht leer sein, ich

590
00:31:28,880 --> 00:31:31,920
möchte ja auch den Inhalt haben.
Ja, also ich nehme quasi die 

591
00:31:31,920 --> 00:31:35,600
erste Liste und erzeugt daraus 
ne komplett neue mit dem 

592
00:31:35,600 --> 00:31:39,000
gleichen Inhalt und dann habe 
ich wirklich 2 Notizbücher und 

593
00:31:39,000 --> 00:31:41,400
wenn ich jetzt bei dem ersten 
was ändere ist das zweite 

594
00:31:41,400 --> 00:31:44,880
Unbetroffen, weil die sich keine
nicht mehr die gleichen Seiten 

595
00:31:44,880 --> 00:31:49,040
teilen sozusagen. 
Ja, ja, wenn du das jetzt so n 

596
00:31:49,040 --> 00:31:53,280
bisschen auf auch das ganze 
Computerspiel Gaming münzt. 

597
00:31:53,760 --> 00:31:58,480
Wo wir auch meinten, dass das 
auch sehr sinnvoll zum Beispiel 

598
00:31:58,480 --> 00:32:01,320
ist, auch als Anwendung. 
Und du hast jetzt beispielsweise

599
00:32:01,320 --> 00:32:04,320
NN Gegnertypen, den du kopierst 
und dieser Gegnertyp hat 

600
00:32:04,320 --> 00:32:08,360
wiederum ne, um das jetzt noch 
mal n bisschen abzuwandeln, hat 

601
00:32:08,360 --> 00:32:11,000
zum Beispiel n Objekt wo irgend 
so n Status drin ist. 

602
00:32:11,000 --> 00:32:13,840
Ne wie zum Beispiel irgendwie 
das Leben, der Zustand, ob er 

603
00:32:13,840 --> 00:32:16,760
gerade irgendwie weiß, nicht 
sitzt oder kämpft oder was auch 

604
00:32:16,760 --> 00:32:20,280
immer und du kopierst es und du 
erzeugst ganz viele Gegner 

605
00:32:20,280 --> 00:32:22,800
davon. 
Und dann haust du zum Beispiel 

606
00:32:22,800 --> 00:32:26,320
einen Gegner an und dadurch, 
dass es ja sozusagen dieser 

607
00:32:26,320 --> 00:32:30,080
Status mit dem Leben da drin 
beispielsweise ne nur ne flache 

608
00:32:30,080 --> 00:32:34,040
Kopie, also ne Shadow Kopie ist,
würden ja alle Gegner sozusagen 

609
00:32:34,040 --> 00:32:36,560
leben verlieren. 
Ne, so als Beispiel jetzt 

610
00:32:36,560 --> 00:32:41,520
gemünzt auf. 
Also ich find im Gaming ist das 

611
00:32:41,520 --> 00:32:43,240
halt auch ganz gut. 
Man kann sich das so vorstellen.

612
00:32:43,240 --> 00:32:46,080
Ich hab zwar ganz ganz viele 
Kopien erzeugt, aber wenn es n 

613
00:32:46,080 --> 00:32:49,120
Cello Copy war, dann haben die 
quasi alle das gleiche 

614
00:32:49,120 --> 00:32:53,440
Gedächtnis, sozusagen ja also es
es ist kein wirkliche, kein 

615
00:32:53,440 --> 00:32:56,240
wirkliches Individuum, was 
sozusagen seine eigenen 

616
00:32:56,240 --> 00:32:58,480
Erfahrungen, seine eigene 
Lebensanzeige oder irgendwas 

617
00:32:58,480 --> 00:33:01,480
hat, sondern unter der Haube 
sind sie alle miteinander 

618
00:33:01,480 --> 00:33:04,120
verbunden sozusagen. 
Das ist eigentlich auch n ganz 

619
00:33:04,120 --> 00:33:08,000
cooles Beispiel und ich glaube 
jedem, der jetzt das hört und 

620
00:33:08,000 --> 00:33:11,760
drüber nachdenkt, ist klar was 
für n Bugpotenzial das Ganze hat

621
00:33:11,920 --> 00:33:14,320
und wie versteckt das vor allem 
auch sein kann. 

622
00:33:14,720 --> 00:33:18,160
Ja und deswegen da Leute wenn 
ihr sowas verwendet also das 

623
00:33:18,160 --> 00:33:22,160
Prototype Pattern liebe Zuhörer 
liebe Zuhörer immer drauf achten

624
00:33:22,160 --> 00:33:24,800
wie diese copy Methode 
implementiert ist, ob es sich 

625
00:33:24,800 --> 00:33:28,320
wirklich um ein ne saubere Kopie
handelt oder ob ich mir da 

626
00:33:28,320 --> 00:33:31,280
Probleme mit einhandel. 
Ja, also da kann man auf jeden 

627
00:33:31,280 --> 00:33:33,680
Fall bei dem. 
Problem mit diesem, mit dieser 

628
00:33:33,680 --> 00:33:36,800
Copyfalle was du meintest kann 
man ja auf jeden Fall direkt, 

629
00:33:36,800 --> 00:33:39,680
wenn man dieses Pattern nutzt 
oder wenn sowas auftritt. 

630
00:33:40,320 --> 00:33:43,280
Da muss man eigentlich direkt 
dran denken, Oh das ist jetzt 

631
00:33:43,280 --> 00:33:45,800
zum Beispiel wirklich ne echte 
Kopie oder nur ne Referenz ne 

632
00:33:45,840 --> 00:33:49,760
also ja das hatten wir 
beispielsweise auch beim beim 

633
00:33:49,760 --> 00:33:52,720
Flappy Buddy ne, da hatten ja 
zum Beispiel Gegnertypen so ne 

634
00:33:52,720 --> 00:33:56,160
bestimmte. 
So bestimmte Arten, wie Sie 

635
00:33:56,160 --> 00:33:59,280
geflogen sind, ne zum Beispiel 
der Rabe hatte so ne Sinuskurve 

636
00:33:59,440 --> 00:34:02,160
und am Anfang als wir es 
implementiert haben, war es 

637
00:34:02,160 --> 00:34:05,160
beispielsweise auch erstmal so, 
dass die Kurve, die der Rabe 

638
00:34:05,160 --> 00:34:09,679
geflogen ist, alle Raben sind 
synchron geflogen, ne bevor es 

639
00:34:09,679 --> 00:34:12,159
dann quasi und. 
Und das ist ja olympisch. 

640
00:34:12,159 --> 00:34:15,120
Also das ist ja nichts Neues. 
Ja, synchron fliegen von Raben. 

641
00:34:15,400 --> 00:34:18,199
Richtig, aber das ist halt so 
das Ding, dass man da eigentlich

642
00:34:18,199 --> 00:34:20,480
dann noch relativ schnell drauf 
kommt und sagt, OK, hier muss 

643
00:34:20,480 --> 00:34:23,040
ich irgendwo ne Referenz 
übergeben haben, ne und das war 

644
00:34:23,040 --> 00:34:28,480
dann im Endeffekt die. 
Sag ich mal das die wie diese 

645
00:34:28,480 --> 00:34:30,480
Bewegung ist. 
Ne und die war dann halt überall

646
00:34:30,480 --> 00:34:32,800
gleich und hat immer den 
gleichen Wert für alle Raben 

647
00:34:32,800 --> 00:34:36,400
gesetzt und dann musste man halt
da kommt man halt eigentlich 

648
00:34:36,400 --> 00:34:39,199
relativ schnell drauf, dass man 
sagt, OK irgendwo müssen wir 

649
00:34:39,199 --> 00:34:41,719
wahrscheinlich ne echte Kopie 
erzeugen und nicht einfach nur 

650
00:34:41,719 --> 00:34:44,000
ne Referenz übergeben ne so. 
Genau. 

651
00:34:45,679 --> 00:34:48,920
Ja, das ist eigentlich auch im 
Großen und Ganzen das Pattern. 

652
00:34:48,920 --> 00:34:52,880
Es ist nicht so komplex, hat 
aber sag ich mal seine Tücken, 

653
00:34:52,880 --> 00:34:56,639
wie gerade. 
Angesprochen und vor allem aber 

654
00:34:56,639 --> 00:35:02,000
auch seine Daseinsberechtigung. 
Und ich denke Fabi im nächsten 

655
00:35:02,000 --> 00:35:04,840
Game könnte ich mir vorstellen, 
dass wir sowas mal gebrauchen 

656
00:35:04,840 --> 00:35:06,720
könnten. 
Ja, je nachdem wie das Game dann

657
00:35:06,720 --> 00:35:08,720
aussieht und dann werden wir da 
auch noch mal explizit drauf 

658
00:35:08,720 --> 00:35:12,200
eingehen, das mal wirklich so 
umsetzen und mal den Mehrwert 

659
00:35:12,200 --> 00:35:15,600
draus ziehen, aber Mehrwert ist 
n gutes Stichwort, lass uns noch

660
00:35:15,600 --> 00:35:18,880
mal jetzt als Fazit am Ende der 
Folge so als Take Home Message 

661
00:35:18,880 --> 00:35:22,160
noch mal kurz vor und Nachteile 
des gesamten Patterns 

662
00:35:22,160 --> 00:35:26,960
zusammenfassen. 
Ich fang mal an, ich hau mal so 

663
00:35:26,960 --> 00:35:30,680
n erstes Ding rein was 
natürlich, und das ist ganz oft 

664
00:35:30,680 --> 00:35:33,920
bei Pattern, das haben wir 
anfangs gesagt, immer n Vorteil 

665
00:35:33,920 --> 00:35:36,880
ist, dass ich halt kein Wissen 
mehr über die konkrete Klasse 

666
00:35:36,880 --> 00:35:39,520
brauche ne ich entkoppel das 
halt die Anwendung von der 

667
00:35:39,520 --> 00:35:43,520
eigentlichen Implementierung, 
das heißt ich definiere nur über

668
00:35:43,520 --> 00:35:45,600
das Interface wie das ganze 
aussehen soll. 

669
00:35:45,920 --> 00:35:48,560
Ich hab ne Klonmethode dann zum 
Beispiel und dann kann ich halt 

670
00:35:48,560 --> 00:35:51,800
einfach von irgendeinem Objekt 
was das anbietet oder 

671
00:35:51,800 --> 00:35:56,000
implementiert Klone erzeugen. 
Ja, und es interessiert mich 

672
00:35:56,000 --> 00:35:58,720
nicht, wie das passiert, sondern
ich will einfach nur, dass es 

673
00:35:58,720 --> 00:36:02,520
passiert, sozusagen. 
Und das ist natürlich, Stichwort

674
00:36:02,520 --> 00:36:06,800
Wiederverwendbarkeit, ja saubere
Entkopplung, das ist halt n sehr

675
00:36:06,800 --> 00:36:10,080
flexibles Konzept, was wirklich 
seine Vorteile mit sich bringt. 

676
00:36:10,160 --> 00:36:12,520
Ja, was natürlich Nachteile 
sind, das hatten wir ja gerade 

677
00:36:12,520 --> 00:36:16,000
schon beschrieben, das ist ja 
die Cellocopy und du hast 

678
00:36:16,000 --> 00:36:18,400
natürlich logischerweise auch 
mehr. 

679
00:36:19,440 --> 00:36:21,360
Ich nenn es jetzt mal 
boilerplate Code. 

680
00:36:21,360 --> 00:36:24,720
Gerade wenn du jetzt zum 
Beispiel wenig komplexe Klassen 

681
00:36:24,720 --> 00:36:27,880
hast, weil du ja im Endeffekt 
anstatt einfach nur n 

682
00:36:27,880 --> 00:36:29,840
konstruktor zu haben, wo du 
irgendwas übergibst, hast du ja 

683
00:36:29,840 --> 00:36:36,400
noch n Interface noch mit dazu. 
Mindestens und ja. 

684
00:36:36,600 --> 00:36:39,040
Wie gesagt, es kann halt 
manchmal auch tricky sein, dann 

685
00:36:39,040 --> 00:36:42,120
eben diese deep Copy selbst zu 
bauen beziehungsweise dann auch 

686
00:36:42,120 --> 00:36:45,520
wirklich darauf zu achten, dass 
sie halt eben wirklich ne deep 

687
00:36:45,520 --> 00:36:47,840
Copy ist. 
Wenn man dann ne deep copy 

688
00:36:47,840 --> 00:36:49,280
braucht, ne. 
Ja. 

689
00:36:49,720 --> 00:36:51,560
Also man kann sich das mal 
vorstellen. 

690
00:36:51,560 --> 00:36:53,400
Nur mal so als 
Gedankenexperiment, wenn ich 

691
00:36:53,400 --> 00:36:57,760
jetzt Objekte hab, ja die 
wiederum als member variablen 

692
00:36:57,760 --> 00:37:01,040
Objekte haben die Member 
variablen Objekte haben wiederum

693
00:37:01,040 --> 00:37:03,720
Referenzen und so weiter das 
kann halt wirklich deswegen auch

694
00:37:03,720 --> 00:37:07,280
deep Copy sich richtig tief 
verschachteln und dann auf 

695
00:37:07,280 --> 00:37:11,440
oberster Ebene ne echte Deep 
Copy zu erzeugen kann richtig 

696
00:37:11,440 --> 00:37:14,000
richtig. 
Komplex wären, um es nett 

697
00:37:14,000 --> 00:37:17,840
auszudrücken. 
Und deswegen ist das wirklich 

698
00:37:17,840 --> 00:37:19,440
nachteilig. 
Ich find es gut, dass du es auch

699
00:37:19,440 --> 00:37:22,600
noch mal gesagt hast, weil das 
ist wirklich dann der Painpoint,

700
00:37:22,600 --> 00:37:27,720
der entstehen kann, ganz klar. 
Ja, was ich noch mit also so ein

701
00:37:27,720 --> 00:37:30,240
bisschen zusammenfassend auch 
noch mal sagen würdest. 

702
00:37:30,800 --> 00:37:33,360
Wir hatten ja jetzt zum Beispiel
auch über in in den vorherigen 

703
00:37:33,360 --> 00:37:35,680
Folgen sowas wie über Bilder 
Pattern geredeten Factory 

704
00:37:35,680 --> 00:37:37,680
Pattern, das sind ja auch alles 
Pattern, die man auch zum 

705
00:37:37,680 --> 00:37:41,280
Beispiel super einsetzen kann, 
rein theoretisch auch in im im 

706
00:37:41,280 --> 00:37:44,480
Gaming Bereich ne, also wenn man
das jetzt noch mal nehmen und 

707
00:37:44,480 --> 00:37:46,680
wenn du jetzt zum Beispiel sagst
Fabian, aber jetzt mal ohne 

708
00:37:46,680 --> 00:37:49,840
Scheiß, warum ist es denn zum 
Beispiel, warum macht man das 

709
00:37:49,840 --> 00:37:51,880
Ganze denn nicht jetzt einfach 
mit einem Factory Pattern? 

710
00:37:51,880 --> 00:37:54,920
Ne so kann man sich hinstellen 
und sagen ja klar du wirst es 

711
00:37:54,920 --> 00:37:58,720
auch hinkriegen mit anderen 
Pattern ungefähr das gleiche. 

712
00:37:59,480 --> 00:38:02,040
Hinzukriegen ne, du kannst 
theoretisch ja auch mehrere 

713
00:38:02,040 --> 00:38:07,440
Pattern sag ich mal mischen und 
irgendwie ne Art Bilder mit in 

714
00:38:07,440 --> 00:38:10,400
dieses Copy mit reinbauen, wenn 
man da irgendwie Bock drauf hat 

715
00:38:10,400 --> 00:38:14,800
kriegt man irgendwie hin. 
Aber es hat natürlich alles noch

716
00:38:14,800 --> 00:38:18,640
mal um das vielleicht noch mal 
kurz zu differenzieren, einfach 

717
00:38:18,640 --> 00:38:20,000
unterschiedliche 
Anwendungsfälle. 

718
00:38:20,000 --> 00:38:23,560
Ne ne Factory ist im Endeffekt 
dafür da, dass du sagst ich weiß

719
00:38:23,560 --> 00:38:26,480
nicht genau was ich bauen muss, 
das entscheide ich aber dann, 

720
00:38:26,480 --> 00:38:28,800
wenn es soweit ist. 
So nach dem Motto dafür wäre 

721
00:38:28,800 --> 00:38:32,560
dann ne Factory da. 
Bei einem Builder ist es so, ich

722
00:38:32,560 --> 00:38:36,520
weiß zwar was ich bauen will ne,
aber es ist relativ kompliziert 

723
00:38:36,520 --> 00:38:38,160
und man muss es irgendwie 
konfigurieren. 

724
00:38:38,520 --> 00:38:40,960
Und beim Prototype ist es halt 
eher so, dass man sagt, OK, ich 

725
00:38:40,960 --> 00:38:43,360
hab schon n ziemlich gutes 
Beispiel davon und ich brauch es

726
00:38:43,360 --> 00:38:47,320
einfach nur kopieren, so salopp 
gesagt ne und an der Stelle 

727
00:38:47,320 --> 00:38:49,160
würde ich einfach noch mal 
sagen, Liebe zürer lieber zürer,

728
00:38:49,160 --> 00:38:50,880
wenn du jetzt zum Beispiel 
sagst, Ey wart mal Factory 

729
00:38:50,880 --> 00:38:53,880
Bildern, hab ich noch gar nicht 
gehört, will ich mehr drüber 

730
00:38:53,880 --> 00:38:56,400
erfahren, haben wir schon 2 
folgen drüber gemacht, also 

731
00:38:56,400 --> 00:38:59,600
einfach mal da reinhören wenn es
interessiert. 

732
00:39:00,560 --> 00:39:04,800
Ist auch n guter Punkt, weil. 
Gerade dieses mehr, also Design 

733
00:39:04,800 --> 00:39:07,680
Pattern ist ja nicht so pro pro 
Software Projekt. 

734
00:39:07,680 --> 00:39:10,960
Ein Design Pattern, mehr nicht, 
sondern es ist ja wirklich 

735
00:39:10,960 --> 00:39:13,680
Anwendungsfall abhängig. 
Ich finde es ja auch gut zu 

736
00:39:13,680 --> 00:39:15,920
sagen, also dass du es gerade 
noch mal zusammengefasst hast, 

737
00:39:15,920 --> 00:39:18,320
weil wenn du jetzt wirklich 
einen sehr komplexen Prototyp 

738
00:39:18,320 --> 00:39:20,880
hast, warum soll da nicht ein 
Bilder Pattern dahinter stecken,

739
00:39:20,880 --> 00:39:23,280
dass du das aufbauen kannst? 
Beispielsweise und wenn du es 

740
00:39:23,280 --> 00:39:26,840
aufgebaut hast, kannst du dann 
das Prototype Pattern verwenden 

741
00:39:26,840 --> 00:39:28,400
um wieder Kopien davon zu 
erzeugen? 

742
00:39:28,400 --> 00:39:31,240
Das ist dir ja völlig 
freigestellt, wichtig ist mit 

743
00:39:31,240 --> 00:39:34,200
einem gesunden Verstand und. 
Das bringt auch irgendwann, sag 

744
00:39:34,200 --> 00:39:36,960
ich mal, die Erfahrung, weil wir
hatten es glaub ich schon oft 

745
00:39:36,960 --> 00:39:39,720
gesagt, gerade am Anfang im 
Studium hast du n Pattern 

746
00:39:39,720 --> 00:39:41,880
gelernt und hast es erst mal 
überall verwendet, weil du bist 

747
00:39:41,880 --> 00:39:44,360
ja jetzt in der Lage dieses 
Pattern zu bauen und bist. 

748
00:39:44,720 --> 00:39:47,760
Hammer, jetzt ja, du hast es 
drauf jetzt und deswegen ich hab

749
00:39:47,760 --> 00:39:50,880
keine Ahnung wie oft ich anfangs
auch selbst singelten oder so. 

750
00:39:50,880 --> 00:39:54,760
Ja wo ich das gelernt hab wie du
meintest ey ich kann das global 

751
00:39:54,800 --> 00:39:57,960
machen, dann nimmst du das halt 
erstmal und die Erfahrung muss 

752
00:39:57,960 --> 00:40:00,320
man sammeln um auch die 
Nachteile da drin zu sehen und 

753
00:40:00,320 --> 00:40:03,360
genauso wie jedes Pattern seinen
Nachteil hat wird man diese dann

754
00:40:03,360 --> 00:40:06,440
auch erfahren, beispielsweise 
hier das Deep Kopie Problem ja 

755
00:40:06,480 --> 00:40:09,200
ne. 
Und deswegen einfach 

756
00:40:09,200 --> 00:40:11,680
ausprobieren und das ganze Mal 
durchspielen. 

757
00:40:11,680 --> 00:40:14,000
Ja, also den Aufruf machen wir 
glaub ich immer am Ende der 

758
00:40:14,000 --> 00:40:17,640
Folge zu sagen Codet das doch 
mal runter codet doch zum 

759
00:40:17,640 --> 00:40:20,560
Beispiel mal die kleine 
Schäfchenfarm lasst sie uns 

760
00:40:20,560 --> 00:40:22,800
zukommen, wir würden Sie gerne 
sehen, ich find das Beispiel 

761
00:40:22,800 --> 00:40:28,800
ziemlich witzig ansonsten ja 
kann man sagen Copy Paste 2.0 

762
00:40:28,800 --> 00:40:31,520
haben wir durchgesprochen heute 
nur das ganze Halt mit wie 

763
00:40:31,520 --> 00:40:35,200
gesagt Verantwortung tragen, es 
gibt halt Sachen zu beachten. 

764
00:40:37,360 --> 00:40:40,240
Und ansonsten interessiert uns 
liebe, zuhören, liebe Zuhörer, 

765
00:40:40,240 --> 00:40:43,120
natürlich hast du das Pattern 
schon mal verwendet oder war es 

766
00:40:43,120 --> 00:40:45,480
dir komplett neu? 
Wie sind deine Erfahrungen 

767
00:40:45,480 --> 00:40:47,600
damit? 
Kennst du Anwendungsfälle, wo 

768
00:40:47,600 --> 00:40:50,880
das einfach absolut genial ist, 
sodass wir das Ganze auch mal 

769
00:40:50,880 --> 00:40:54,720
mit der Community teilen können?
Schreib uns gerne die Mail, wie 

770
00:40:54,720 --> 00:40:57,480
immer in den Shownotes wir 
freuen uns über jede Nachricht, 

771
00:40:57,480 --> 00:41:00,640
vielen Dank dafür schon mal. 
Ansonsten findet ihr auch n 

772
00:41:00,640 --> 00:41:02,480
kleinen Spendenling. 
Wenn ihr sagt, Ey Mensch Leute, 

773
00:41:02,480 --> 00:41:04,480
der Podcast auch gerade die 
Reihe, die hat mir echt 

774
00:41:04,480 --> 00:41:05,840
geholfen. 
Ich würde euch gerne 

775
00:41:05,840 --> 00:41:09,160
unterstützen dann vielen vielen 
Dank für den Support der Link 

776
00:41:09,160 --> 00:41:12,960
wie gesagt in den Shownotes auch
zu allen anderen Plattformen und

777
00:41:13,360 --> 00:41:15,880
da bleibt mir jetzt nichts 
weiter zu sagen außer wir hören 

778
00:41:15,880 --> 00:41:17,840
uns alle beim nächsten Mal 
wieder ich wünsche euch ne 

779
00:41:17,840 --> 00:41:21,440
schöne Zeit bis dahin macht es 
gut eure Coding Buddies. 

780
00:41:21,920 --> 00:41:22,960
Gemeinsam besser.
