1
00:00:00,040 --> 00:00:03,120
Letztens erst gelernt hab, dass 
ein Räuberteller das ist, weil 

2
00:00:03,120 --> 00:00:05,040
irgendwer, ich weiß gar nicht 
mehr, wo er das bestellt und ich

3
00:00:05,040 --> 00:00:07,600
dachte mir, so was willst denn 
du jetzt was das ist das. 

4
00:00:07,600 --> 00:00:11,080
Krass. 
Ich will das auch und dann bist 

5
00:00:11,080 --> 00:00:14,880
du hungrig nach Hause gegangen. 
Coding Buddies, Dein Podcast 

6
00:00:14,880 --> 00:00:18,400
rund um Softwareentwicklung und 
aktueller Tech News herzlich 

7
00:00:18,440 --> 00:00:32,400
Willkommen. 
Einen wunderschönen guten Tag 

8
00:00:32,400 --> 00:00:36,880
und herzlich Willkommen zur 
neuen Folge vom Coding Buddies 

9
00:00:36,880 --> 00:00:38,800
Podcast. 
Eine Woche ist wieder rum, 

10
00:00:38,800 --> 00:00:42,680
deswegen gibt es natürlich eine 
neue Folge und das passiert 

11
00:00:42,680 --> 00:00:44,680
natürlich nicht mit mir alleine,
sondern natürlich auch mit Tino 

12
00:00:44,680 --> 00:00:46,640
und Tino ist auch. 
Hier was geht, wie geht's, wie 

13
00:00:46,640 --> 00:00:51,280
steht's Tino, Was geht ab? 
Fabi schön, dass wir mal wieder 

14
00:00:51,280 --> 00:00:55,120
zusammengefunden haben, wie 
geht's dir alles gut ja alles 

15
00:00:55,120 --> 00:00:56,960
gut bei mir, alles gut, alles 
gut, war ein bisschen 

16
00:00:56,960 --> 00:00:59,200
anstrengend so die letzte Woche 
aber. 

17
00:00:59,600 --> 00:01:01,520
Trotzdem ganz gut überstanden, 
muss ich sagen. 

18
00:01:02,080 --> 00:01:05,040
Ja, hab richtig Bock, dann ist 
ich hab richtig Bock immer 

19
00:01:05,040 --> 00:01:08,560
einmal morgens aufstehen und als
oberstes Ziel setzen überleben 

20
00:01:08,560 --> 00:01:12,600
für den Tag, weil genau man weiß
ja ne man stellt ja jeden Tag 

21
00:01:12,600 --> 00:01:15,440
nen neuen Rekord auf in Tage die
man überlebt hat. 

22
00:01:15,520 --> 00:01:17,680
Genau, ist ja ne schöne 
Herangehensweise. 

23
00:01:19,600 --> 00:01:21,440
Ja, aber. 
August ist auch immer richtig 

24
00:01:21,440 --> 00:01:24,480
positiv, aber August ist auch 
immer n bisschen. 

25
00:01:25,120 --> 00:01:28,040
Finde ich so also in der Zeit so
drumherum weißt du so im 

26
00:01:28,240 --> 00:01:32,000
Augustmonat und dann drumherum 
so kleckerweise es finde ich 

27
00:01:32,000 --> 00:01:36,240
immer so n ist n Monat, da ist 
viel los, jedenfalls ne von 

28
00:01:36,240 --> 00:01:36,960
daher geht. 
Es auch. 

29
00:01:36,960 --> 00:01:39,120
Also es ist natürlich, es ist 
natürlich Sommer und 

30
00:01:39,120 --> 00:01:41,480
gleichzeitig bedeutet das bei 
den meisten, das auch viel 

31
00:01:41,480 --> 00:01:45,600
geplant ist, die Wochenenden 
verplant sind, aber ich sag mir 

32
00:01:45,600 --> 00:01:49,360
dann immer lass mal nicht 
genervt sein davon, weil es ja 

33
00:01:49,360 --> 00:01:51,440
schön wenn schönes Wetter ist. 
Es ist schön wenn man viel 

34
00:01:51,440 --> 00:01:53,200
vorhat. 
Und auch wenn es n bisschen 

35
00:01:53,200 --> 00:01:56,200
stressig manchmal wirken kann 
oder wird, sollte man das 

36
00:01:56,200 --> 00:02:00,000
einfach genießen. 
Unbedingt schöne Zeit, da hast 

37
00:02:00,000 --> 00:02:02,360
du recht. 
Tino und in dem Sinne wollen wir

38
00:02:02,360 --> 00:02:07,040
auch einfach ganz positiv an die
ganze Sache rangehen, und zwar 

39
00:02:07,760 --> 00:02:11,200
mal gucken, was wir jetzt heute 
besprechen in der neuen Folge, 

40
00:02:11,200 --> 00:02:13,760
weil ich mein Podcast ist immer 
was Positives. 

41
00:02:14,960 --> 00:02:16,800
Das ist schön, das ist mal n 
Highlight. 

42
00:02:17,280 --> 00:02:20,240
Auf jeden Fall. 
Und also ich sag mal so, bevor 

43
00:02:20,240 --> 00:02:23,840
wir jetzt ne das Obligatorische 
zum Thema kommen, wollen wir 

44
00:02:23,840 --> 00:02:27,760
noch mal einmal ganz kurz dran 
erinnern, dass Liebe zu und 

45
00:02:27,760 --> 00:02:31,560
lieber Zuhörer, vergiss nicht 
diesen Podcast zu abonnieren und

46
00:02:31,560 --> 00:02:36,120
diese wunderbare Glocke, die es 
zu betätigen, weil dann ist auf 

47
00:02:36,120 --> 00:02:38,960
jeden Fall garantiert, dass jede
Folge die angezeigt wird 

48
00:02:38,960 --> 00:02:42,000
beziehungsweise dass du keine 
mehr verpasst, also da auf jeden

49
00:02:42,000 --> 00:02:43,320
Fall dran denken. 
Ich hab übrigens mal 

50
00:02:43,320 --> 00:02:46,080
nachgeschaut. 
Sie existiert, diese ominöse 

51
00:02:46,080 --> 00:02:48,240
Glocke, und man kann 
draufklicken und man kriegt dann

52
00:02:48,240 --> 00:02:51,040
wirklich Benachrichtigungen. 
Das war echt so ein Game Changer

53
00:02:51,040 --> 00:02:54,440
für mich gewesen. 
Stark, Tino kann jetzt auch 

54
00:02:54,440 --> 00:02:58,760
seine Podcasts alle hören die 
ihr so hört, ich wurde jetzt 

55
00:02:58,760 --> 00:03:03,280
auch informiert, das ist. 
Gut, aber Tino sagte mal, worum 

56
00:03:03,280 --> 00:03:06,600
geht es denn heute, was steht 
heute so in den Staatlichern, 

57
00:03:06,600 --> 00:03:09,760
was steht an, worum geht's? 
Wir machen heute weiter mit 

58
00:03:09,760 --> 00:03:12,840
unserer Design Pattern Reihe und
da hab ich auch ziemlich Bock 

59
00:03:12,840 --> 00:03:15,080
drauf, weil wir haben ja auch 
gutes Feedback dazu bekommen. 

60
00:03:15,080 --> 00:03:18,120
Ist natürlich sag ich mal ne 
sehr grundlegende, also ne 

61
00:03:18,120 --> 00:03:21,360
grundlagenreihe aber ich finde 
es ist cool sich einfach mit 

62
00:03:21,360 --> 00:03:23,520
jedem Pattern noch mal zu 
beschäftigen das noch mal zu 

63
00:03:23,520 --> 00:03:26,640
verinnerlichen sich auch mal 
Codebeispiele dafür anzuschauen 

64
00:03:26,640 --> 00:03:31,440
und egal ob man jetzt Einsteiger
oder fortgeschritten ist, es 

65
00:03:31,440 --> 00:03:34,120
lohnt sich einfach sich damit 
auseinanderzusetzen, weil es 

66
00:03:34,120 --> 00:03:38,480
halt einfach auch. 
Best Practices beinhaltet in 

67
00:03:38,480 --> 00:03:41,680
vielen Fällen und man dadurch 
einfach auch seine eigene 

68
00:03:41,680 --> 00:03:46,400
Codequalität steigern kann. 
Und heute möchte ich mit dir 

69
00:03:46,400 --> 00:03:51,040
fabi über das Bilder Pattern 
sprechen und das Ziel sollte mal

70
00:03:51,040 --> 00:03:54,800
so sein, wann braucht man es, 
wann sollte man es verwenden, 

71
00:03:54,800 --> 00:03:57,520
wann ist es eher ein Overkill 
und unnötig. 

72
00:03:58,160 --> 00:04:01,360
Und ich würde dabei auch gerne 
mit dir besprechen, was so das 

73
00:04:01,360 --> 00:04:04,320
klassische Pattern ist, weil wir
betrachten das ja meistens immer

74
00:04:04,320 --> 00:04:06,080
so wirklich lehrbuchhaft 
erstmal. 

75
00:04:06,080 --> 00:04:08,720
Also so wie es mal definiert 
wurde, sag ich mal. 

76
00:04:09,480 --> 00:04:12,720
Also die klassische Methode und 
möchte aber auch gerne auf 

77
00:04:12,720 --> 00:04:14,560
moderne Varianten mit dir 
eingehen. 

78
00:04:14,960 --> 00:04:18,240
Gerade wenn man n gewissen 
Frameworks, da können wir ja 

79
00:04:18,240 --> 00:04:21,600
Beispiele nennen, unterwegs ist,
sieht man halt ähnliche 

80
00:04:21,600 --> 00:04:24,720
Konstrukte, die eigentlich 
dieses Pattern abbilden, aber 

81
00:04:24,720 --> 00:04:27,120
nicht so im klassischen Sinne 
und da möchte ich gerne mit dir 

82
00:04:27,120 --> 00:04:30,640
auch mal drauf eingehen, wieso 
moderne Interpretationen davon 

83
00:04:30,640 --> 00:04:34,240
aussehen, sag ich mal. 
Ja und wie üblich wird es 

84
00:04:34,240 --> 00:04:37,360
natürlich, ich hab ne kleine 
Analogie mitgebracht, Fabi, 

85
00:04:37,360 --> 00:04:41,040
diesmal hab ich eine. 
Wird es wiederum essen gehen wie

86
00:04:41,040 --> 00:04:44,640
immer in unserer Design Pattern 
Reihe und schön, dass du schon 

87
00:04:44,640 --> 00:04:46,480
gesagt hast. 
Also Leute, wenn ihr keine 

88
00:04:46,480 --> 00:04:49,600
Essenstipps von uns verpassen 
wollt, abonniert diesen Podcast.

89
00:04:51,440 --> 00:04:56,960
Aber das ist natürlich auch ist 
uns selber aber aufgefallen, wir

90
00:04:56,960 --> 00:05:00,160
haben sehr viel, ich meine 
nehmen wir das mal hungrig. 

91
00:05:00,160 --> 00:05:02,240
Auf oder so also. 
Irgendwo muss es ja herkommen. 

92
00:05:02,240 --> 00:05:03,920
Ich. 
Weiß es auch nicht. 

93
00:05:05,120 --> 00:05:07,040
Das Feedback war auch einfach 
geil so. 

94
00:05:07,360 --> 00:05:09,280
Wir hatten ja gesagt, Ey, wir 
müssen jetzt erstmal Burger 

95
00:05:09,280 --> 00:05:11,440
bestellen nach einer von den 
Folgen und dann haben wir auch 

96
00:05:11,440 --> 00:05:14,240
das Feedback bekommen, so Ey, 
Leute wegen euch muss ich echt 

97
00:05:14,240 --> 00:05:19,040
erstmal Essen bestellen, 
supergeil schreibt uns Leute wir

98
00:05:19,040 --> 00:05:21,640
freuen uns über solche 
Nachrichten, es zieht auf jeden 

99
00:05:21,640 --> 00:05:24,080
Fall einfach. 
Ja, auf jeden Fall, aber 

100
00:05:24,160 --> 00:05:25,680
definitiv. 
Ich würde auch am Ende noch mal 

101
00:05:25,680 --> 00:05:28,080
gucken, dass wir vielleicht 
sagen, so wie oft benutzen wir 

102
00:05:28,080 --> 00:05:30,400
das Pattern, wie oft glauben 
wir, dass das Pattern noch 

103
00:05:30,400 --> 00:05:32,320
eingesetzt wird und so weiter so
im generellen. 

104
00:05:33,280 --> 00:05:35,840
Einfach, dass man noch mal ein 
bisschen einordnen kann, ist es 

105
00:05:35,840 --> 00:05:37,640
interessant für mich oder 
vielleicht nicht? 

106
00:05:38,160 --> 00:05:41,120
Aber insgesamt ist es natürlich 
nicht schlecht, darüber Bescheid

107
00:05:41,120 --> 00:05:43,400
zu wissen, egal an welchem Punkt
man steht. 

108
00:05:43,400 --> 00:05:47,800
Wie du schon meintest und genau 
ich meine, wenn wir jetzt 

109
00:05:47,800 --> 00:05:51,200
reingehen mal so in das Thema 
und sagen ne im Endeffekt gibt 

110
00:05:51,200 --> 00:05:53,280
es ja diese Pattern, das ist ja 
immer irgendwie ein gewisser 

111
00:05:53,280 --> 00:05:56,960
Grundgedanke, der irgendwie 
einen Sinn hat wo man sagt, OK, 

112
00:05:56,960 --> 00:06:00,960
dieses Pattern wurde ja nicht 
ohne Grund irgendwie ins Leben 

113
00:06:00,960 --> 00:06:06,040
gerufen. 
Und genauso ist es halt eben 

114
00:06:06,040 --> 00:06:10,800
auch beim Bilder Pattern und wie
gesagt, in diesem Ganzen dieser 

115
00:06:10,800 --> 00:06:14,400
ganzen Pattern Serie sind wir 
auf jeden Fall immer irgendwo im

116
00:06:14,400 --> 00:06:17,040
Objektorientierungsbereich. 
Also das bleibt eigentlich nie 

117
00:06:17,040 --> 00:06:23,920
aus und wenn man sich jetzt zum 
Beispiel mal überlegt, wenn also

118
00:06:23,920 --> 00:06:26,160
das Bilder pattern, wieso ist 
das zum Beispiel da? 

119
00:06:26,640 --> 00:06:30,560
Es ist halt, wenn man das jetzt 
so ein bisschen zusammenfasst, 

120
00:06:31,680 --> 00:06:34,240
ich. 
Glaubt man kennt das oder man 

121
00:06:34,240 --> 00:06:35,920
wird auf jeden Fall irgendwann 
dahin kommen, dass man 

122
00:06:35,920 --> 00:06:39,960
vielleicht irgendwie n Objekt 
hat, wo unglaublich viele, sagen

123
00:06:39,960 --> 00:06:43,560
wir mal, Parameter in einen 
konstruktor reingegeben werden. 

124
00:06:43,560 --> 00:06:45,760
Ne, also ich glaube als ich 
angefangen hab irgendwann mal zu

125
00:06:45,760 --> 00:06:50,000
programmieren und mein erstes 
Objekt instanziiert habe, das 

126
00:06:50,000 --> 00:06:53,520
war glaube ich einfach nur sowas
wie New My object und das war es

127
00:06:53,520 --> 00:06:58,320
ne also es gab keine Parameter 
und im Normalfall zumindest war 

128
00:06:58,320 --> 00:07:01,680
es bei mir auch so. 
War es ganz oft so, dass eben 

129
00:07:01,680 --> 00:07:04,480
vielleicht die Parameter in den 
Konstruktor, wenn du n neues 

130
00:07:04,480 --> 00:07:07,120
Objekt erzeugen möchtest und 
sagst, ey, das Objekt was ich 

131
00:07:07,120 --> 00:07:10,720
jetzt habe, habe ne was ich 
jetzt erzeugen möchte das das 

132
00:07:11,280 --> 00:07:13,960
kann ich manchmal vielleicht so 
manchmal so erzeugen, das heißt 

133
00:07:13,960 --> 00:07:16,720
du gibst irgendwie n Parameter 
rein um halt eben irgendwie dem 

134
00:07:16,720 --> 00:07:21,600
Objekt noch was mitzugeben und 
das das kann natürlich relativ 

135
00:07:22,480 --> 00:07:25,240
schnell auch mal eskalieren, 
dass du zum Beispiel sagst, OK, 

136
00:07:25,240 --> 00:07:27,200
du hast jetzt vielleicht nicht 
irgendwie nur einen Parameter, 

137
00:07:27,200 --> 00:07:29,200
sondern hast auf einmal 10 
Parameter, weil. 

138
00:07:29,680 --> 00:07:32,440
Ne, das ist so find ich auch so 
n so n so ne typische 

139
00:07:32,440 --> 00:07:35,680
Entwicklung, dass man sagt EY 
ich hab jetzt n Objekt und dann 

140
00:07:35,680 --> 00:07:38,640
denkt man sich irgendwann na ja 
ja irgendwie müsste ich doch das

141
00:07:38,640 --> 00:07:41,480
Objekt noch so n bisschen 
parametrisieren können na gut OK

142
00:07:41,480 --> 00:07:45,120
ich geb mal n Parameter rein und
dann findet man besser hast du 

143
00:07:45,120 --> 00:07:48,960
auch mal Blut geleckt und denkst
dir so boah geil ey let s go da 

144
00:07:48,960 --> 00:07:51,520
kann ich noch was reingeben und 
noch was noch was noch was und 

145
00:07:51,520 --> 00:07:52,640
irgendwann checkst du gar nichts
mehr. 

146
00:07:53,520 --> 00:07:56,480
Gerade wenn du vielleicht noch 
sagst, der Parameter, der darf 

147
00:07:56,480 --> 00:07:59,920
da sein, aber muss auch nicht 
unbedingt, der ist jetzt nicht 

148
00:08:00,240 --> 00:08:03,760
wirklich zwingend und so weiter 
und dann hast du halt einfach 

149
00:08:03,760 --> 00:08:08,160
irgendwann so viele Felder, so 
viele Parameter, die du 

150
00:08:08,160 --> 00:08:09,840
irgendwie in den Konstruktor 
rein gibst, dass du halt 

151
00:08:09,840 --> 00:08:12,560
irgendwann sagst, keine Ahnung, 
ich kann das hier, ich, ich 

152
00:08:12,560 --> 00:08:13,720
verstehe gar nicht mehr was los 
ist. 

153
00:08:13,720 --> 00:08:15,000
Ne und es kann schnell 
passieren. 

154
00:08:15,680 --> 00:08:19,280
Ja, also du kommst halt an den 
Punkt, gerade auch als 

155
00:08:19,280 --> 00:08:22,280
Einsteigerin oder Einsteiger, 
dass du irgendwann Code hast, 

156
00:08:22,280 --> 00:08:24,200
der. 
Nicht mehr wirklich lesbar und 

157
00:08:24,200 --> 00:08:26,360
wartbar ist. 
Und das ist ja immer so das 

158
00:08:26,360 --> 00:08:30,120
große Problem, was man vermeiden
möchte, ne egal wie lange man 

159
00:08:30,120 --> 00:08:33,440
schon codet das gilt es immer zu
vermeiden, dass man in diesen in

160
00:08:33,440 --> 00:08:38,480
diese Gefahr läuft sozusagen. 
Und was du meintest, so die 

161
00:08:38,480 --> 00:08:41,320
Anfänge, da muss ich auch sehr 
oft an unser Studium denken, wir

162
00:08:41,320 --> 00:08:44,560
hatten ja auch so 
grundlagenkurse Einführungen in 

163
00:08:44,560 --> 00:08:46,960
die Informatik, hieß einer, wo 
wir halt auch wirklich so. 

164
00:08:47,600 --> 00:08:49,280
Ich glaub ich mit Java gestartet
sind. 

165
00:08:49,280 --> 00:08:52,240
Dann hatten wir so Algorithmen 
und Datenstrukturen, wo man halt

166
00:08:52,240 --> 00:08:55,360
einfach auch so gewisse Sachen 
gelernt hat, auch so auch 

167
00:08:55,360 --> 00:08:58,640
Pattern zum Beispiel und ich 
weiß noch und das ist nämlich 

168
00:08:58,640 --> 00:09:00,880
auch n Problem, wo man ganz 
schnell reinläuft, wenn man 

169
00:09:00,880 --> 00:09:04,560
jetzt viele Parameter hat, ja 
und die Sprache in der du 

170
00:09:04,560 --> 00:09:07,360
entwickelst, wie zum Beispiel 
Java, was wir hatten, 

171
00:09:08,480 --> 00:09:12,160
unterstützt, unterstützt, dann 
halt overloading ne, also dass 

172
00:09:12,160 --> 00:09:15,160
du den Konstruktor einfach 
überlebst und sagst, Na ja, OK 

173
00:09:15,160 --> 00:09:18,880
der ist jetzt echt sehr sehr. 
Unübersichtlich also überlade 

174
00:09:18,880 --> 00:09:21,680
ich den und sag, es gibt den 
einmal mit 2 Parametern. 

175
00:09:21,680 --> 00:09:27,840
Es gibt den mit 3 Parametern 45 
kurze Pause 89 weißt du also 

176
00:09:28,640 --> 00:09:31,600
dann kommst du halt in so einer 
overload Hölle. 

177
00:09:31,920 --> 00:09:34,240
Und das passiert auch schnell, 
gerade wenn du, sag ich mal, 

178
00:09:34,240 --> 00:09:36,480
gelernt hast. 
Oh, das geht ja ja wie du 

179
00:09:36,480 --> 00:09:37,440
meintest. 
Blut geleckt. 

180
00:09:37,440 --> 00:09:40,160
Oh oh jetzt, jetzt kann ich 
meinen Code ja richtig schön 

181
00:09:40,160 --> 00:09:42,840
optimieren, jetzt überlade ich 
hier einfach alles und das sind 

182
00:09:42,840 --> 00:09:46,080
halt alles so Anzeichen dafür, 
dass irgendwas in deiner 

183
00:09:46,080 --> 00:09:50,880
Struktur nicht stimmt und sehr 
unübersichtlich wird und das 

184
00:09:50,880 --> 00:09:54,880
sind im Prinzip, wie soll ich 
sagen, Anzeichen dafür, dass du 

185
00:09:54,880 --> 00:09:57,960
vielleicht ja und dafür wurde 
das Bilder Pattern ins Leben 

186
00:09:57,960 --> 00:10:01,280
gerufen auf n Design Pattern 
zurückgreifen solltest. 

187
00:10:01,920 --> 00:10:03,840
Oder ein Fall, den ich noch kurz
erwähnen möchte. 

188
00:10:04,000 --> 00:10:06,400
Was noch schlimmer ist, wenn du 
sagst, nein, ich möchte jetzt 

189
00:10:06,400 --> 00:10:10,560
mein Objekt nicht instanziieren 
und konfigurieren an der Stelle 

190
00:10:10,560 --> 00:10:14,480
mit 8 Parametern, sondern ich 
entschlanke das und werde jetzt 

191
00:10:14,480 --> 00:10:18,480
im Code verteilt irgendwo 
irgendwie dieses Objekt weiter 

192
00:10:18,480 --> 00:10:21,280
initialisieren mit zum Beispiel 
Settern. 

193
00:10:21,280 --> 00:10:25,360
Ja und das klingt halt erstmal 
wieder irgendwie so im Sinne der

194
00:10:25,360 --> 00:10:27,800
Objektorientierung. 
Ja ich hab Getta und Setter ja 

195
00:10:27,800 --> 00:10:30,520
alles richtig. 
Aber dann verteilst du irgendwo 

196
00:10:30,520 --> 00:10:33,440
in deiner Codebasis im Prinzip 
die Initialisierung deines 

197
00:10:33,440 --> 00:10:36,560
Objekts und das ist halt auch 
nicht schön am Ende und 

198
00:10:36,560 --> 00:10:40,840
unübersichtlich genauso. 
Oder wenn du jetzt sag ich mal 

199
00:10:40,840 --> 00:10:43,200
das alles in Subklassen 
irgendwann auslagerst ne und du 

200
00:10:43,200 --> 00:10:47,240
abstrahierst dich in 1000 ebenen
runter, das ist halt alles nicht

201
00:10:47,240 --> 00:10:51,400
Sinn und Zweck am Ende und 
deswegen wurde sich sowas wie 

202
00:10:51,400 --> 00:10:53,920
das Bilder Pattern überlegt und 
ich finde. 

203
00:10:54,360 --> 00:10:56,640
Und da möchte ich jetzt mal auf 
die Analogie eingehen. 

204
00:10:56,800 --> 00:10:59,560
Das Bilder Pattern kann man 
wirklich wieder wirklich schön 

205
00:10:59,560 --> 00:11:03,120
mit Essen erklären. 
Man kann alles mit Essen 

206
00:11:03,120 --> 00:11:06,320
erklären. 
Und zwar dachte ich mir nämlich,

207
00:11:06,480 --> 00:11:08,720
es geht um Essen. 
Ja OK, das ist jetzt so unser 

208
00:11:08,720 --> 00:11:11,680
Signature Move, aber ich möchte 
mal noch so n Beispiel dabei 

209
00:11:11,680 --> 00:11:14,760
nehmen was alle glaube ich so 
sich gut vorstellen können weil 

210
00:11:14,760 --> 00:11:18,600
es ne schöne Sache ist. 
Stell dir vor wir beide sind und

211
00:11:18,600 --> 00:11:21,760
du Liebe zuhören Liebe zuhören 
natürlich auch wir 3 sind 

212
00:11:21,760 --> 00:11:24,200
eingeladen zum Essen und es gibt
n. 

213
00:11:24,360 --> 00:11:27,280
Buffet das ist geil. 
Buffet mag jeder ne n schönes 

214
00:11:27,280 --> 00:11:30,160
Buffet mit ganz vielen leckeren 
Sachen und man kann sich das so 

215
00:11:30,160 --> 00:11:33,520
einzeln aussuchen was man haben 
will, man kann die Menge 

216
00:11:33,520 --> 00:11:36,160
bestimmen Oh das war super 
lecker, das esse ich in der 

217
00:11:36,160 --> 00:11:39,560
nächsten Runde noch mal. 
Weißt du diese Gedankengänge die

218
00:11:39,560 --> 00:11:41,920
man dann hat? 
Ja, du bezahlst Geld dafür, dass

219
00:11:41,920 --> 00:11:44,800
du dir so viel Teller holen 
kannst, wie du willst, aber 

220
00:11:44,800 --> 00:11:48,400
holst dir maximal 2. 
Ja, ich will. 

221
00:11:48,400 --> 00:11:52,080
Jetzt sagen, ich lass uns mal 
nicht in diesen All you can eat 

222
00:11:52,080 --> 00:11:54,280
Gedanken, da will ich gar nicht 
unbedingt. 

223
00:11:54,360 --> 00:12:00,680
Und jetzt stell dir vor, du 
gehst los zum Buffet und 

224
00:12:00,680 --> 00:12:03,120
möchtest dir jetzt Essen holen. 
Freust dich schon so richtig 

225
00:12:03,360 --> 00:12:06,440
auswählen zu können, dir erstmal
alles angucken zu können und 

226
00:12:06,440 --> 00:12:10,160
dann gezielt Sachen auf deinen 
Teller zu machen, zu sagen, ich 

227
00:12:10,160 --> 00:12:12,280
möchte ein bisschen davon und 
ein bisschen davon und nehme ich

228
00:12:12,280 --> 00:12:15,200
eine Vorspeise, erstmal gucken 
was für Vorspeisen es gibt, so 

229
00:12:15,200 --> 00:12:19,920
weißt du und jetzt steht da aber
einer du kriegst einen Teller. 

230
00:12:20,280 --> 00:12:22,640
Beziehungsweise du kriegst nicht
mal den Teller so klassisch, 

231
00:12:22,640 --> 00:12:24,920
dass du einen Teller in der Hand
nimmst und Losgehst, sondern da 

232
00:12:24,920 --> 00:12:32,640
steht jetzt eine Servicekraft 
und sagt, so was darf es denn 

233
00:12:32,640 --> 00:12:36,640
für sie heute sein? 
Du denkst dir so, naja, ich 

234
00:12:36,640 --> 00:12:38,760
möchte jetzt einen Teller gerne 
haben und zum Buffet gehen und 

235
00:12:38,760 --> 00:12:42,560
das stückweise für mich hier 
klären was ich essen möchte. 

236
00:12:43,040 --> 00:12:46,400
Nein du möchtest jetzt bitte 
sagen was du haben möchtest vom 

237
00:12:46,400 --> 00:12:49,440
Buffet und. 
Und die Servicekraft wird dir 

238
00:12:49,440 --> 00:12:52,000
diesen Teller zurecht machen und
ihn dir geben. 

239
00:12:52,000 --> 00:12:54,400
Das heißt, du gehst nicht 
wirklich direkt zum Befehl, 

240
00:12:54,400 --> 00:12:57,320
sondern du kriegst zum 
Zeitpunkt, wo du das entscheiden

241
00:12:57,320 --> 00:13:00,560
musst, den ganzen Teller. 
Ja, die Servicekraft ist der 

242
00:13:00,560 --> 00:13:04,800
Builder. 
Nein, warte, warte, die 

243
00:13:04,800 --> 00:13:09,360
Servicekraft ist im Prinzip, 
erstelle mir einen Teller mit 

244
00:13:09,360 --> 00:13:13,120
dem Essen erstmal nur, also du 
musst genau an der Stelle 

245
00:13:13,120 --> 00:13:16,240
entscheiden. 
Was möchte ich haben jetzt 

246
00:13:16,640 --> 00:13:19,600
sofort, du kriegst jetzt einen 
Teller und da ist das drauf was 

247
00:13:19,600 --> 00:13:22,600
du sagst und da sind wir ja bei 
unserem Konstruktor mit den 

248
00:13:22,600 --> 00:13:25,440
ganzen Parametern. 
Vorspeise ja nein, welche 

249
00:13:25,440 --> 00:13:27,680
Vorspeise möchtest du noch ein 
Getränk drauf haben? 

250
00:13:27,840 --> 00:13:29,240
Jetzt vielleicht nicht auf dem 
Teller, wenn du jetzt ein 

251
00:13:29,240 --> 00:13:33,200
Tablett hast oder so ne und so 
weiter und das fühlt sich doch 

252
00:13:33,200 --> 00:13:36,800
einfach in diesem Szenario 
überhaupt nicht richtig an was 

253
00:13:36,800 --> 00:13:39,520
du machen möchtest ist ja 
Schritt für Schritt dir diesen 

254
00:13:39,520 --> 00:13:43,200
Teller aufzubauen, du möchtest 
ja gucken. 

255
00:13:43,840 --> 00:13:46,800
Ist denn überhaupt noch was da? 
Was für Vorspeisen gibt es denn 

256
00:13:46,960 --> 00:13:49,360
ja auch, doch das sieht gut aus,
ich mach mir mal nen Löffel 

257
00:13:49,360 --> 00:13:52,560
drauf und dann gehst du weiter 
und so füllt sich nach und nach 

258
00:13:52,560 --> 00:13:54,880
dein Teller, das heißt dein 
Objekt wird nach und nach 

259
00:13:54,880 --> 00:13:58,040
definiert und wenn du zum Platz 
gehst, hast du deinen fertigen 

260
00:13:58,040 --> 00:14:02,120
Teller mit dem Essen deiner Wahl
in der Menge deiner Wahl, sogar 

261
00:14:02,120 --> 00:14:06,720
in der Reihenfolge aufgetan 
deiner Wahl so gesehen und gehst

262
00:14:06,720 --> 00:14:09,800
zu deinem Platz und hast deinen 
fertigen Essensteller OK, also 

263
00:14:09,800 --> 00:14:11,520
das ist doch eigentlich die 
bessere. 

264
00:14:12,160 --> 00:14:14,480
Art und Weise, wie du an einem 
Buffet essen möchtest. 

265
00:14:14,960 --> 00:14:19,680
Okay also du hast quasi gesagt 
der die Bedienung die das auftut

266
00:14:19,680 --> 00:14:23,280
ist sozusagen der Konstruktor, 
den du halt in einem bestimmten 

267
00:14:23,280 --> 00:14:27,360
Raster sozusagen vor wie 
vorgegeben, so sag ich jetzt 

268
00:14:27,360 --> 00:14:31,120
mal, bedienen musst. 
Wenn du aber zum Beispiel das 

269
00:14:31,120 --> 00:14:33,080
einfach selber dir auftun 
kannst, wie es ja beim Buffet 

270
00:14:33,080 --> 00:14:35,280
eigentlich normalerweise der 
Fall ist, dann bist du im 

271
00:14:35,280 --> 00:14:40,480
Endeffekt der Bilder, der dir am
Ende das Objekt Abendessen baut.

272
00:14:40,640 --> 00:14:42,160
So die Richtige, ja, zum 
Beispiel den Teller, den 

273
00:14:42,160 --> 00:14:44,520
Essensteller. 
Ja, genau. 

274
00:14:44,880 --> 00:14:48,560
OK, und alle solche Sachen wie 
Optionalität, wie du schon 

275
00:14:48,560 --> 00:14:52,120
meintest ne, gibt es überhaupt 
noch Nachspeise die ich haben 

276
00:14:52,120 --> 00:14:54,240
möchte weiß ich ja zu dem 
Zeitpunkt gar nicht, wenn ich 

277
00:14:54,240 --> 00:14:56,320
nicht mal im Buffet stehe, es 
kann ja sein, dass die gerade 

278
00:14:56,320 --> 00:14:58,800
gewechselt wird oder leer ist, 
dann kann ich ihm vorne ja 

279
00:14:58,800 --> 00:15:02,760
sagen, ja ich möchte jetzt bitte
Dessert das und das und er denkt

280
00:15:02,760 --> 00:15:04,480
sich so OK aber ich weiß nicht 
ob es da ist. 

281
00:15:04,640 --> 00:15:07,120
Also du kannst ja so 
optionalitäten dann wirklich 

282
00:15:07,200 --> 00:15:10,320
schwer überblicken. 
Und vor allem warten in dem Fall

283
00:15:10,320 --> 00:15:13,200
dann auch ne. 
Das wär aber auch blöd, wenn du 

284
00:15:13,200 --> 00:15:16,240
da extra ne Kraft hast die das 
macht und ich würd gern das 

285
00:15:16,240 --> 00:15:19,880
keine Ahnung ob es das gibt. 
OK kommt einfach mit dem 

286
00:15:19,880 --> 00:15:23,880
Lernteiler wieder zurück es tut 
mir leid Sir wir haben es nicht 

287
00:15:23,880 --> 00:15:26,960
Black. 
Ja, aber find ich auf jeden Fall

288
00:15:26,960 --> 00:15:30,160
ganz gut. 
Ist ne schöne Analogie und 

289
00:15:30,160 --> 00:15:34,400
stellt im Endeffekt auch genau 
das dar, was so n so n Builder 

290
00:15:34,400 --> 00:15:37,840
dann am Ende macht. 
Das heißt? 

291
00:15:38,720 --> 00:15:42,880
Du hast im Endeffekt ein. 
Du hast im Endeffekt für mich, 

292
00:15:42,880 --> 00:15:45,760
ich würde es jetzt so sagen, 
dass das Builder Pattern so eine

293
00:15:45,760 --> 00:15:51,280
Art, ich nenne es jetzt mal 
Helper ist, der dir am Ende dein

294
00:15:51,280 --> 00:15:54,920
gewünschtes Objekt nach deinem 
Gusto sozusagen zusammenstellt, 

295
00:15:54,920 --> 00:15:56,480
richtig? 
Genau. 

296
00:15:57,200 --> 00:15:59,920
Ja. 
Also wir können ja mal. 

297
00:16:00,320 --> 00:16:03,760
Auf das klassische Bilder 
Pattern so lehrbuchartig drauf 

298
00:16:03,760 --> 00:16:05,760
eingehen. 
Also es ist auch n creational 

299
00:16:05,760 --> 00:16:09,440
Pattern, das heißt es passt noch
ganz gut zu den bisherigen und 

300
00:16:09,440 --> 00:16:13,400
im Prinzip geht es darum 
komplexe Objekte wie zum 

301
00:16:13,400 --> 00:16:19,120
Beispiel ein Essensteller, wo 
ganz viele teilgerichte sag ich 

302
00:16:19,120 --> 00:16:21,480
mal drauf sind, weil im Buffet 
machen wir uns nichts vor, man 

303
00:16:21,480 --> 00:16:25,840
macht sich von allen bisschen 
was, ja und wie kann ich so n 

304
00:16:25,840 --> 00:16:30,400
Objekt quasi so ne komplexen. 
Objekte kontrolliert erzeugen 

305
00:16:30,400 --> 00:16:33,680
und damit beschäftigt sich das 
Bilderpattern und im Prinzip 

306
00:16:33,680 --> 00:16:37,600
möchtest du genau das 
voneinander trennen, diesen 

307
00:16:37,600 --> 00:16:41,840
Konstruktionsschritt und den 
Repräsentationsschritt, also 

308
00:16:41,840 --> 00:16:44,640
diesen fertigen Teller zu haben.
Das willst du voneinander 

309
00:16:44,640 --> 00:16:47,520
trennen, die Herstellung mit der
Repräsentation am Ende. 

310
00:16:49,200 --> 00:16:51,320
Definitiv. 
Und wir haben es ja schon 

311
00:16:51,320 --> 00:16:54,880
gesagt, es ist auf jeden Fall 
definitiv ideal, wenn man halt 

312
00:16:54,880 --> 00:16:57,920
eben. 
Viele, auch optionale Felder hat

313
00:16:59,040 --> 00:17:01,840
um das jetzt mal an deinem 
Beispiel anzubringen, möchte ich

314
00:17:01,840 --> 00:17:04,920
jetzt vielleicht noch n Dessert 
mitnehmen vom Buffet oder nicht?

315
00:17:04,920 --> 00:17:07,920
Ne, dass man halt sagt OK, also 
zum Beispiel ich bin jetzt nicht

316
00:17:07,920 --> 00:17:11,359
ganz so n Dessert Typ so 
manchmal ja, aber meistens eher 

317
00:17:11,359 --> 00:17:13,720
nicht, dann nehme ich mir lieber
noch mal Nachschlag, so nach dem

318
00:17:13,720 --> 00:17:17,680
Motto ne oder halt zum Beispiel 
wenn man unterschiedliche 

319
00:17:17,680 --> 00:17:21,119
Ausprägungen vom Objekt hat. 
Also wenn du jetzt diesen Teller

320
00:17:21,119 --> 00:17:24,160
nimmst und sagst ne OK du nimmst
jetzt einmal irgendwie. 

321
00:17:25,040 --> 00:17:30,000
Weiß nicht von Angebotsplatte 1 
und 2 und beim nächsten Mal 1 

322
00:17:30,000 --> 00:17:31,240
und 3, weil 1 so gut geschmeckt 
hat. 

323
00:17:31,240 --> 00:17:32,960
Willst du aber noch was Neues 
ausprobieren, ne so, dann hast 

324
00:17:32,960 --> 00:17:35,680
du im Endeffekt durch das 
Gleiche durch den gleichen, also

325
00:17:35,680 --> 00:17:38,040
durch dieses durch diesen 
Bildern das durch diesen 

326
00:17:38,040 --> 00:17:41,400
Bildern, durch diesen Bilder das
gleiche gebaut, ne das gleiche 

327
00:17:41,400 --> 00:17:43,520
Objekt mehr oder weniger, aber 
mit einer anderen Ausprägung 

328
00:17:43,520 --> 00:17:46,800
genau was ich auf jeden Fall 
ganz interessant fand war, weil 

329
00:17:46,800 --> 00:17:48,960
du jetzt auch gesagt hast, 
selbst wenn man jetzt 

330
00:17:48,960 --> 00:17:51,200
fortgeschritten ist, kann man ja
noch n bisschen was lernen, ne? 

331
00:17:51,680 --> 00:17:54,880
Und ich fand es ganz 
interessant, weil jetzt auch, 

332
00:17:54,960 --> 00:17:58,800
als wir die Folge vorbereitet 
haben, fand ich es ganz 

333
00:17:58,800 --> 00:18:03,640
spannend, weil ich sag mal der 
Builder, so wie ich ihn zum 

334
00:18:03,640 --> 00:18:06,880
Beispiel verwende. 
Oft war nicht der klassische 

335
00:18:06,880 --> 00:18:10,240
Builder, sondern halt eher 
einen, den wir dann auch gleich 

336
00:18:10,240 --> 00:18:12,920
noch mal beschreiben werden, 
aber ich fand das auf jeden Fall

337
00:18:12,920 --> 00:18:16,240
super spannend, dass weil 
irgendwie man verwendet das aus 

338
00:18:16,240 --> 00:18:18,800
einem bestimmten Grund, das 
sagen wir auch gleich noch mal. 

339
00:18:18,800 --> 00:18:22,880
Vielleicht wieso ich den so dann
im Endeffekt kenne, aber es gibt

340
00:18:22,880 --> 00:18:26,360
ja noch wirklich diesen diesen 
richtig klassischen Bilder, weil

341
00:18:26,360 --> 00:18:28,040
du ja auch gerade vom 
klassischen Bilder Pattern 

342
00:18:28,040 --> 00:18:29,800
geredet hast und auch am Anfang 
meintest. 

343
00:18:30,000 --> 00:18:33,920
Laut Lehrbuch willst du mal kurz
sagen, was ist denn laut 

344
00:18:33,920 --> 00:18:36,560
Lehrbuch, bevor wir dann am 
Ende, vielleicht auch später 

345
00:18:36,560 --> 00:18:39,760
noch mal darauf hinkommen, wie 
ich ihn zum Beispiel auch oft 

346
00:18:39,760 --> 00:18:41,600
verwende oder wie ich ihn 
eigentlich auch kenne. 

347
00:18:42,560 --> 00:18:44,240
Ja, ich, ich weiß, worauf du 
hinaus willst. 

348
00:18:44,240 --> 00:18:47,080
Deswegen haben wir es ja mit 
reingenommen, weil es ist jetzt 

349
00:18:47,080 --> 00:18:50,400
wirklich mal der der klassische 
Aspekt dahinter ist, dass du 

350
00:18:50,400 --> 00:18:53,120
sagst, OK, das Pattern braucht 
auf jeden Fall ein eine 

351
00:18:53,120 --> 00:18:55,600
Produktklasse, ne, also ein 
Builder. 

352
00:18:56,160 --> 00:19:00,160
Das Pattern an sich dreht sich 
natürlich immer um ein Produkt 

353
00:19:00,160 --> 00:19:03,360
am Ende, was ich erzeugen 
möchte, ja, also wovon ich 

354
00:19:03,360 --> 00:19:07,440
Objekte instanziieren kann und 
in unserem Fall wäre das ja 

355
00:19:07,440 --> 00:19:09,840
jetzt der Essensteller an 
unserem Beispiel. 

356
00:19:10,320 --> 00:19:14,080
Ja, das ist das Produkt, was wir
quasi herstellen wollen. 

357
00:19:14,080 --> 00:19:18,960
Das heißt, du hast jetzt erstmal
eine klasse Essens Teller ja, 

358
00:19:19,360 --> 00:19:23,200
Plate irgendwie, wie auch immer 
man das denn nennen möchte, dann

359
00:19:23,200 --> 00:19:27,840
wirst du ein Builder brauchen, 
aber, und das ist jetzt der 

360
00:19:27,840 --> 00:19:30,560
Unterschied was du meintest, für
dich war jetzt ein Builder in 

361
00:19:30,560 --> 00:19:32,800
der Implementierung wie du es 
verwenden würdest. 

362
00:19:33,280 --> 00:19:36,160
Kein Interface, aber im 
klassischen Sinne ist der 

363
00:19:36,160 --> 00:19:40,160
Builder ein Interface, aber. 
Und zwar ein Interface mit 

364
00:19:40,160 --> 00:19:43,320
Konstruktionsschritten wie 
schaffe ich es, diesen Teller zu

365
00:19:43,320 --> 00:19:46,800
erzeugen? 
Ne, also sowas wie füll die 

366
00:19:47,360 --> 00:19:51,840
Vorspeise auf füll die den 
Hauptgang auf, also da sind im 

367
00:19:51,840 --> 00:19:56,480
Prinzip Schritte, also Funktion 
drin definiert wie sich das 

368
00:19:56,480 --> 00:19:58,800
Produkt am Ende zusammensetzt. 
Ja. 

369
00:19:59,520 --> 00:20:02,960
Ja, und dann ganz klassische 
Objektorientierung habe ich 

370
00:20:02,960 --> 00:20:04,880
jetzt ein Interface und ich 
brauche natürlich auch eine 

371
00:20:04,880 --> 00:20:08,800
Implementierung davon. 
Das heißt, ich implementiere 

372
00:20:08,800 --> 00:20:14,880
dann zum Beispiel den Italian 
Food Builder. 

373
00:20:14,960 --> 00:20:16,360
Ja, und mal wieder, das hatten 
wir schon mal. 

374
00:20:16,360 --> 00:20:20,160
So ähnlich das Beispiel, das 
heißt, ich sage jetzt von diesem

375
00:20:20,160 --> 00:20:24,160
Bilder, implementiere ich eine 
italienische Variante, das 

376
00:20:24,160 --> 00:20:27,440
heißt, ich gehe ans Buffet und 
wähle jetzt gezielt, 

377
00:20:27,440 --> 00:20:32,720
implementiere ich quasi die 
Funktion, nimm Vorspeise und 

378
00:20:32,720 --> 00:20:35,920
sage, die ist so implementiert, 
dass ich mir jetzt antipasti 

379
00:20:35,920 --> 00:20:39,040
nehme. 
Zum Beispiel von den Vorspeisen,

380
00:20:39,760 --> 00:20:43,720
Hauptgang, Lasagne. 
Da gibt es jetzt so Lasagne zur 

381
00:20:43,720 --> 00:20:45,920
Auswahl, das heißt, ich 
implementiere meine Bilder so, 

382
00:20:45,920 --> 00:20:51,080
dass der sagt, da nimmst du 
jetzt bitte ne Lasagne, ja und 

383
00:20:51,080 --> 00:20:55,080
Nachtisch, Tiramisu, was anderes
fällt mir jetzt gerade nicht ein

384
00:20:55,680 --> 00:20:57,920
und dann habe ich quasi, ich 
hoffe das passt alles für die 

385
00:20:57,920 --> 00:21:02,000
italienische Küche, dann habe 
ich quasi einen Essensteller im 

386
00:21:02,000 --> 00:21:05,480
italienischen Flair. 
Erzeugt ne wenn ich diesen 

387
00:21:05,480 --> 00:21:08,800
Bilder verwende und dann gibt es
ganz ganz klassisch. 

388
00:21:08,880 --> 00:21:11,720
Das habe ich aber selten so gut 
wie gar nicht gemacht bisher und

389
00:21:11,720 --> 00:21:17,200
das werden wir später erklären. 
Warum gibt es noch eine weitere 

390
00:21:17,200 --> 00:21:22,400
Klasse und zwar eine Art 
Director und der ist jetzt dafür

391
00:21:22,400 --> 00:21:26,240
da, im Bilder noch festzulegen, 
in welcher Reihenfolge ich das 

392
00:21:26,240 --> 00:21:29,400
mache. 
Ja, ja, also ich habe jetzt die 

393
00:21:29,400 --> 00:21:31,680
einzelnen Schritte, ich weiß, 
wie ich diesen Teller 

394
00:21:31,680 --> 00:21:33,920
zusammenbauen kann, aber die 
Frage ist, in welcher 

395
00:21:33,920 --> 00:21:36,560
Reihenfolge möchte ich das 
machen, ist mir das wichtig. 

396
00:21:36,720 --> 00:21:40,280
Ja, also ich glaub die 
wenigstens die gehen los und 

397
00:21:40,280 --> 00:21:43,200
holen sich erstmal n Dessert das
ich mein was was wär das denn 

398
00:21:44,560 --> 00:21:47,280
nein sondern ich geh jetzt 
wirklich die so n Dessert ist 

399
00:21:47,360 --> 00:21:49,840
Quatsch Dessert so n Befehl ist 
ja meistens auch so aufgebaut, 

400
00:21:49,840 --> 00:21:52,400
dass du vorne erstmal ja 
Vorspeisen hast. 

401
00:21:52,960 --> 00:21:55,840
Den Hauptgang und hinten am Ende
stehen denn die Desserts und 

402
00:21:55,840 --> 00:22:00,160
genauso könntest du jetzt in 
deinem Director vorgeben, das 

403
00:22:00,160 --> 00:22:04,160
ist im Prinzip dann der Aufbau 
des Buffets, dass du erstmal zu 

404
00:22:04,160 --> 00:22:06,800
den Vorspeisen gehst, die 
Funktion Ausführst, dann 

405
00:22:06,800 --> 00:22:10,320
Hauptgang und dann Nachtisch und
am Ende vielleicht noch weiß ich

406
00:22:10,320 --> 00:22:13,840
nicht, was man halt mit 
reinnehmen möchte noch so und 

407
00:22:13,840 --> 00:22:18,400
das wäre so gesehen das 
klassische Bilder Pattern und in

408
00:22:18,400 --> 00:22:22,880
deinem Code den du dann hast. 
Also wenn du das jetzt verwenden

409
00:22:22,880 --> 00:22:26,320
möchtest, zum Beispiel, hol mir 
einen Essensteller oder bau mir 

410
00:22:26,320 --> 00:22:30,600
diesen Essensteller auf, kannst 
du ja dann entscheiden, was für 

411
00:22:30,600 --> 00:22:33,160
eine Art Teller du möchtest. 
Das ist dann die Flexibilität 

412
00:22:33,160 --> 00:22:36,240
hinter dem Pattern, dass du 
sagst, ach, ich nehme den 

413
00:22:36,240 --> 00:22:39,800
italienischen Teller, das heißt 
ich weiß, ich muss da jetzt 

414
00:22:39,800 --> 00:22:42,320
hingehen, ich nehme die 
Antipasti und so weiter das 

415
00:22:42,320 --> 00:22:45,240
heißt, ich habe meinen Bauplan 
und wenn ich einen Director noch

416
00:22:45,240 --> 00:22:47,680
verwende, dann sagt er auch noch
in der Reihenfolge machst du 

417
00:22:47,680 --> 00:22:49,920
das. 
Und dann kriegst du am Ende 

418
00:22:49,920 --> 00:22:53,800
quasi Objekt Play zurück, mit 
gefüllt mit deinem Essen. 

419
00:22:53,800 --> 00:22:59,800
Das heißt, dieses Objekt hat 
denn zum Beispiel ja weiß ich 

420
00:22:59,800 --> 00:23:04,800
nicht irgendeine Funktion wie 
Get Get Starter oder so, und da 

421
00:23:04,800 --> 00:23:07,680
kommt dann zurück antipasti ne, 
also wenn du jetzt irgendwie das

422
00:23:07,680 --> 00:23:10,160
überprüfen möchtest, dass du 
siehst, ach auf meinem Teller 

423
00:23:10,160 --> 00:23:16,160
liegt eingelegte Oliven, weiß 
ich, was ja, ja, genau. 

424
00:23:16,480 --> 00:23:18,800
Also ich ich bei hab es auf 
jeden Fall. 

425
00:23:18,800 --> 00:23:20,240
Also ich weiß auf jeden Fall was
du meinst. 

426
00:23:20,240 --> 00:23:25,360
Wie gesagt, ich fand es halt, 
fand es halt spannend, dass ich 

427
00:23:25,360 --> 00:23:28,240
halt wenn ich Bilder verwendet 
hab hab ich den so halt 

428
00:23:28,240 --> 00:23:30,080
eigentlich nie verwendet. 
Ne das ist irgendwie ganz 

429
00:23:30,080 --> 00:23:32,880
spannend und deswegen das meint 
ich so man kann halt immer auch 

430
00:23:32,880 --> 00:23:36,480
noch mal auch was lernen wenn 
man jetzt zum Beispiel auch 

431
00:23:36,480 --> 00:23:40,680
schon fortgeschritten ist halt 
ne und ist halt irgendwie 

432
00:23:40,680 --> 00:23:43,720
interessant wie das eigentlich 
zustande gekommen ist. 

433
00:23:43,720 --> 00:23:45,040
Ich find es aber auch n 
bisschen. 

434
00:23:46,480 --> 00:23:50,400
Ich weiß nicht, bisschen 
schwierig diese Steuerung dann 

435
00:23:50,400 --> 00:23:52,040
über so n Director zu machen, 
weißt du? 

436
00:23:54,160 --> 00:23:58,200
Ja, es ist halt Fakt ist, das 
können wir auch bei den 

437
00:23:58,200 --> 00:24:00,240
Nachteilen. 
Also wir wollen ja noch vor und 

438
00:24:00,240 --> 00:24:04,160
Nachteile beleuchten schon mal n
bisschen vorweggegriffen diese 

439
00:24:04,160 --> 00:24:07,040
klassische Implementierung fühlt
sich halt schon so n bisschen 

440
00:24:07,040 --> 00:24:10,400
nach Boiler Plate Code an. 
Das heißt, du musst halt viel 

441
00:24:10,400 --> 00:24:12,800
Struktur aufbauen, um das Nutzen
zu können. 

442
00:24:12,800 --> 00:24:16,320
Wie du zum Beispiel meintest n 
Director extra implementieren, 

443
00:24:16,320 --> 00:24:21,360
um ne Reihenfolge vorzugeben. 
Ja genau, der am Ende ja auch 

444
00:24:21,360 --> 00:24:24,400
nur aufruft und sagst Ey hier 
ist n Bilder und jetzt führ mal 

445
00:24:24,400 --> 00:24:27,840
bitte in den Reihenfolgen die 
ich dir sage, die auch wieder 

446
00:24:27,840 --> 00:24:31,680
implementiert sind. 
Die Aufrufe des Bilders durch 

447
00:24:31,680 --> 00:24:34,400
sozusagen ja. 
Also wie gesagt, im Endeffekt 

448
00:24:34,400 --> 00:24:36,000
macht es schon Sinn. 
Kann man auch noch mal drauf 

449
00:24:36,000 --> 00:24:37,680
eingehen, aber auch nicht immer 
ne. 

450
00:24:38,560 --> 00:24:43,120
Aber Fakt ist und das ist ja 
genau der.es gibt ne Menge 

451
00:24:43,120 --> 00:24:46,560
Vorteile von so einem 
Bilderpattern, die wir auch 

452
00:24:46,560 --> 00:24:48,960
schon mehr oder weniger 
angeschnitten haben. 

453
00:24:49,120 --> 00:24:51,600
Also du hattest ja auch schon 
gesagt es soll ne Trennung von 

454
00:24:51,600 --> 00:24:54,960
Objektstruktur und der 
Konstruktionslogik sozusagen da 

455
00:24:54,960 --> 00:24:58,480
sein und das ist im Endeffekt ja
auch mehr oder weniger das 

456
00:24:58,480 --> 00:25:01,840
Hauptding was in Bilderpattern 
macht und wofür es halt eben 

457
00:25:01,840 --> 00:25:05,160
steht, ne also. 
Ne Produktklasse muss halt nicht

458
00:25:05,160 --> 00:25:06,880
wissen wie sie zusammengesetzt 
wird. 

459
00:25:06,880 --> 00:25:10,320
Ne, also das Buffet selber denkt
sich so mir egal. 

460
00:25:10,640 --> 00:25:12,560
Mach n Abendbrot draus, so nach 
dem Motto. 

461
00:25:13,520 --> 00:25:15,440
Der Keller denkt sich egal. 
Genau. 

462
00:25:15,440 --> 00:25:18,400
Wie wie das Essen drauf kommt. 
Hauptsache ich bin nicht leer. 

463
00:25:19,040 --> 00:25:22,400
Richtig. 
Und selbst wenn er am Ende leer 

464
00:25:22,400 --> 00:25:24,400
wäre, dann hat die Person 
vielleicht keinen Hunger. 

465
00:25:25,400 --> 00:25:28,040
Ja, wie heißt das? 
Das ist das so n Räuberteller 

466
00:25:28,040 --> 00:25:30,880
oder so nennt man das da oder 
das find ich immer super witzig 

467
00:25:31,080 --> 00:25:33,400
n Räuberteller der leer ist, 
weil du ja eh nur von den 

468
00:25:33,400 --> 00:25:37,040
Nachbartellern Runternimmst. 
Tatsächlich muss ich ganz kurz 

469
00:25:37,040 --> 00:25:40,520
off topic sagen, dass ich das 
letztens erst gelernt hab, dass 

470
00:25:40,520 --> 00:25:42,080
es n räuberteller das ist, weil 
irgendwer. 

471
00:25:42,080 --> 00:25:44,080
Ich weiß gar nicht mehr, wo hat 
das bestellt und ich dachte mir,

472
00:25:44,080 --> 00:25:46,880
so was willst n du jetzt was das
ist das krass, ich will das 

473
00:25:46,880 --> 00:25:50,240
auch. 
Und dann bist du hungrig nach 

474
00:25:50,240 --> 00:25:52,920
Hause gegangen. 
Und dann hab ich erstmal 

475
00:25:52,920 --> 00:25:55,840
gemerkt, ah OK. 
Gut, das ist also n ja gut. 

476
00:25:56,000 --> 00:25:59,840
Macht Sinn. 
Aber es ermöglicht halt eben 

477
00:25:59,840 --> 00:26:04,480
auch ne gute Architektur, ne. 
Gerade im Single Responsibility 

478
00:26:04,480 --> 00:26:09,560
Principle, wenn man darauf das 
Ganze jetzt Münzen möchte, weil 

479
00:26:09,560 --> 00:26:13,080
du im Endeffekt sagst, OK, das 
Objekt selber kannst du zwar 

480
00:26:13,080 --> 00:26:17,200
erzeugen, aber wie das Objekt 
erzeugt wird, das ist diese 

481
00:26:17,200 --> 00:26:19,960
diese. 
Verantwortlichkeit liegt nicht 

482
00:26:19,960 --> 00:26:22,400
beim Objekt, sondern halt eben 
in dem Fall dann beim Bilder. 

483
00:26:22,400 --> 00:26:28,160
Ne ja ja, ansonsten hast du halt
wie gesagt auch Flexibilität in 

484
00:26:28,160 --> 00:26:31,360
den Objekten beziehungsweise in 
den in den in den nicht in den 

485
00:26:31,360 --> 00:26:33,840
Objekten in den Feldern in den 
optionalen Feldern. 

486
00:26:33,840 --> 00:26:35,520
Eventuell wenn du optionale 
Felder hast. 

487
00:26:35,920 --> 00:26:40,480
Das ist natürlich noch gut, weil
ich weiß nicht ob man das schon 

488
00:26:40,560 --> 00:26:44,040
bestimmt, kennt man das? 
Gerade wenn du zum Beispiel 

489
00:26:44,040 --> 00:26:45,800
Funktionen hast. 
Es gibt ja genügend Sprachen, 

490
00:26:45,800 --> 00:26:48,320
die Funktionen anbieten, wo du 
zum Beispiel auch optionale 

491
00:26:48,320 --> 00:26:51,440
Parameter mitgeben kannst. 
Wenn du das bei Konstruktoren 

492
00:26:51,440 --> 00:26:53,880
hast. 
Es wird irgendwann schwierig, es

493
00:26:53,880 --> 00:26:56,960
wird irgendwann anstrengend, 
weil du brauchst eigentlich, je 

494
00:26:56,960 --> 00:27:00,320
mehr du von diesen optionalen 
Dingern hast, auch wenn du es 

495
00:27:00,320 --> 00:27:05,280
natürlich im im Bilder einbauen 
kannst, ist es immer so n 

496
00:27:05,280 --> 00:27:09,280
trotzdem am Ende ne Frage. 
Wie gut ist es, optionale Sachen

497
00:27:09,280 --> 00:27:11,760
zu haben, weil je mehr optional 
du hast und je mehr du 

498
00:27:11,760 --> 00:27:14,240
vielleicht Abhängigkeiten von 
den optional ne ich kann das 

499
00:27:14,240 --> 00:27:17,280
mitnehmen und wenn du das 
mitnimmst, dann muss aber auch 

500
00:27:17,280 --> 00:27:20,480
das dabei sein, so als Beispiel 
bläht sich halt ne Dokumentation

501
00:27:20,480 --> 00:27:23,280
ewig auf, also du brauchst am 
Ende irgendwann ne Dokumentation

502
00:27:23,280 --> 00:27:25,480
um irgendwann zu verstehen was 
da los ist. 

503
00:27:25,480 --> 00:27:28,880
Ne, so n Builder kann dir da 
auch in im Guiding so n bisschen

504
00:27:28,880 --> 00:27:31,160
helfen, trotzdem ne auch gerade 
wenn du jetzt zum Beispiel so n 

505
00:27:31,160 --> 00:27:34,560
Director beispielsweise hast, 
der dir dann sagt ne. 

506
00:27:34,960 --> 00:27:37,040
OK, du willst das und das 
machen, aber das funktioniert so

507
00:27:37,040 --> 00:27:38,000
nicht. 
Wenn du das nicht hast 

508
00:27:38,000 --> 00:27:41,120
beispielsweise ne ist so n 
bisschen angeleitet das Ganze. 

509
00:27:41,280 --> 00:27:44,080
Was natürlich jetzt vielleicht n
bisschen naheliegend ist, aber 

510
00:27:44,080 --> 00:27:46,880
halt auch wirklich n Vorteil 
dabei ist, dass du 

511
00:27:46,880 --> 00:27:49,040
wiederverwendbare Konfiguration 
hast. 

512
00:27:49,040 --> 00:27:54,720
Ja, du kannst ja so gesehen das 
buffetbeispiel du baust dir 

513
00:27:54,720 --> 00:27:56,640
deinen Teller zusammen, du isst 
ja und denkst dir. 

514
00:27:57,280 --> 00:28:01,040
Oh Mann, das war der Hammer, ich
möchte genau den gleichen noch 

515
00:28:01,040 --> 00:28:03,120
mal essen. 
Dann gehst du los und füllst dir

516
00:28:03,120 --> 00:28:05,760
den Teller noch mal so auf und 
isst den dann halt noch mal. 

517
00:28:06,080 --> 00:28:08,400
Und das spiegelt halt auch ein 
Bilderpad dann wieder. 

518
00:28:08,480 --> 00:28:12,080
Du kannst natürlich so wie du 
das Objekt aufgebaut hast, es 

519
00:28:12,080 --> 00:28:15,760
erneut aufbauen, ja, gerade wenn
du jetzt auch noch so ein 

520
00:28:15,760 --> 00:28:18,800
Director verwendet zum Beispiel,
du kannst der exakt genau das 

521
00:28:18,800 --> 00:28:22,800
gleiche ja Objekt wieder 
aufbauen, was auch ein Vorteil 

522
00:28:22,800 --> 00:28:26,160
ist. 
Das auf jeden Fall, ja, also. 

523
00:28:27,880 --> 00:28:29,680
Das fand ich zum Beispiel auch 
mal ganz interessant. 

524
00:28:29,680 --> 00:28:34,480
Also wenn wenn ich jetzt mal 
kurz ein Beispiel aus dem Leben 

525
00:28:34,960 --> 00:28:36,640
erzähle. 
Jetzt geht es los. 

526
00:28:37,440 --> 00:28:42,080
Also ich hab zum Beispiel mal 
Bilder Pattern verwendet in 

527
00:28:42,080 --> 00:28:48,200
einem am Arbeitskontext, da 
wurde so eine so eine Art sagen 

528
00:28:48,200 --> 00:28:51,280
wir mal Test Data Bilder haben 
wir geschrieben, ne, da konntest

529
00:28:51,280 --> 00:28:54,040
du dann aus diesem Test Data 
Bilder, das war natürlich jetzt 

530
00:28:54,040 --> 00:28:56,000
ein bisschen größeres Ding, es 
war auch. 

531
00:28:56,320 --> 00:29:00,960
Bisschen wahrscheinlich zu krass
über alles im in den ganzen 

532
00:29:00,960 --> 00:29:04,000
Tests drüber gebügelt, aber Fakt
war, dass es auf jeden Fall sehr

533
00:29:04,000 --> 00:29:06,800
sehr gut funktioniert hat, dass 
du gesagt hast, du möchtest 

534
00:29:06,800 --> 00:29:10,400
jetzt zum Beispiel n bestimmtes 
Objekt erzeugen, ne mit 

535
00:29:10,560 --> 00:29:15,760
bestimmten befüllten Attributen,
weil du halt gesagt hast. 

536
00:29:15,920 --> 00:29:19,000
Also weil zum Beispiel in dem in
prozessschritten sag ich jetzt 

537
00:29:19,000 --> 00:29:21,520
mal, wenn du so n Objekt 
hattest, konntest du das so mit 

538
00:29:21,520 --> 00:29:24,080
mehreren Prozessschritten 
erweitern, ne, so kannst du es 

539
00:29:24,080 --> 00:29:26,720
dir ungefähr vorstellen. 
Und wenn du jetzt zum Beispiel 

540
00:29:26,720 --> 00:29:30,880
einen bestimmten Prozessschritt 
testen wolltest, dann musste man

541
00:29:30,880 --> 00:29:33,000
ja nicht noch mal alles vorher 
machen, sondern der Test 

542
00:29:33,000 --> 00:29:35,360
databuilder war dann halt im 
Endeffekt in der Lage zu sagen 

543
00:29:35,600 --> 00:29:38,440
okay, nimm mir mal so ein 
Objekt, mach mal dies, mach mal 

544
00:29:38,440 --> 00:29:40,520
das, mach mal das damit und dann
bist du an einem Punkt und 

545
00:29:40,520 --> 00:29:42,160
kannst quasi direkt weiter 
testen. 

546
00:29:42,240 --> 00:29:46,400
Das Schöne daran war, du 
konntest relativ schnell auch im

547
00:29:48,320 --> 00:29:51,760
in deinem Test lesen, was ist 
schon mit diesem Objekt 

548
00:29:51,760 --> 00:29:54,640
passiert. 
Dass du dann sozusagen auch 

549
00:29:54,640 --> 00:29:56,680
generell den Test ganz gut lesen
konntest. 

550
00:29:56,680 --> 00:30:00,480
Und dafür war es halt einfach 
hilfreich, dass du so sukzessiv 

551
00:30:00,960 --> 00:30:04,000
bestimmte Objekte, die du 
brauchtest, halt eben 

552
00:30:04,000 --> 00:30:05,680
vorbereiten konntest für deinen 
Test. 

553
00:30:05,680 --> 00:30:08,640
Also das hat auf jeden Fall, das
war ein super Beispiel, fand ich

554
00:30:08,640 --> 00:30:12,720
zumindest dafür, wann so ein 
Builderpad dann schon mal ja gut

555
00:30:12,720 --> 00:30:18,320
funktioniert hat oder gut gute 
Arbeit geleistet hat, absolut. 

556
00:30:18,760 --> 00:30:20,560
Ist ein gutes Beispiel. 
Ich finde es aber auch gut, dass

557
00:30:20,560 --> 00:30:24,000
du sagst, dass das Ganze 
ziemlich groß geworden ist und 

558
00:30:24,000 --> 00:30:27,960
man das Halt kontrollieren 
musste bei all den Vorteilen 

559
00:30:27,960 --> 00:30:30,880
haben wir natürlich, denn das 
zum Beispiel auch als Nachteil, 

560
00:30:31,280 --> 00:30:35,680
also Fakt ist, durch diese 
erhöhte oder verbesserte 

561
00:30:35,680 --> 00:30:39,120
Struktur hast du auch mit dem 
klassischen Bilder Pattern mehr 

562
00:30:39,120 --> 00:30:42,320
Code, zum Beispiel hat man ja 
gesehen, wie viele Klassen man 

563
00:30:42,320 --> 00:30:45,920
braucht oder auch Interfaces um 
überhaupt diese Struktur 

564
00:30:45,920 --> 00:30:48,880
aufzubauen. 
Ja, und das ist auf jeden Fall 

565
00:30:48,880 --> 00:30:52,560
Nachteil, weil du erstmal 
wesentlich mehr Code erzeugst. 

566
00:30:53,040 --> 00:30:56,760
Und wenn ich jetzt aber sehr 
einfache Objekte habe, ja, also 

567
00:30:56,760 --> 00:30:59,240
ich rede nicht mal davon, dass 
es zum Beispiel keine Parameter 

568
00:30:59,240 --> 00:31:02,400
gibt, ja, dass das halt 
statische Objekte irgendwie sind

569
00:31:02,400 --> 00:31:06,640
in dem Kontext, sondern 
vielleicht 23 Parameter und 

570
00:31:06,640 --> 00:31:10,600
keine optionalen zum Beispiel. 
Dann bin ich an einem Punkt, wo 

571
00:31:10,600 --> 00:31:13,920
man abwägen muss, ist das nicht 
einfach zu viel Overhead? 

572
00:31:14,480 --> 00:31:18,920
Ja, also ich kann ja schnell 
diese oder schnell ist schnell 

573
00:31:18,920 --> 00:31:24,680
ist das falsche Wort einfach 
diese Objekte erzeugen ja und 

574
00:31:24,680 --> 00:31:26,360
gerade auch wenn Performance 
wichtig ist. 

575
00:31:26,360 --> 00:31:30,080
Wenn ich sehr viele Objekte 
erstelle, ja, dann ist 

576
00:31:30,080 --> 00:31:32,560
vielleicht ein Builder Pattern 
auch nicht das Richtige, weil 

577
00:31:32,960 --> 00:31:37,240
das ist ein wichtiger Punkt. 
Ich erzeuge ja nicht einfach nur

578
00:31:37,240 --> 00:31:41,760
ein Objekt, sondern. 
Ich rufe Funktion von Objekten 

579
00:31:41,760 --> 00:31:47,280
auf, um ein Objekt zu erstellen.
Das ist das ist n feiner, also 

580
00:31:47,280 --> 00:31:49,440
der sieht jetzt nicht so riesig 
aus, der Unterschied aber im 

581
00:31:49,440 --> 00:31:52,840
Performance Kontext kann das 
enormer Overhead bedeuten, weil 

582
00:31:52,840 --> 00:31:55,760
ich nicht einfach nur n Objekt 
instanziiere, sondern sehr viele

583
00:31:55,760 --> 00:32:00,040
Funktionsaufrufe eventuell habe 
um das finale Objekt zu bekommen

584
00:32:00,040 --> 00:32:02,400
was ich brauche und wenn ich 
jetzt sehr sehr viele Objekte 

585
00:32:02,400 --> 00:32:05,440
davon brauche zum Beispiel es 
ist n riesen Befehl, da sind 

586
00:32:05,440 --> 00:32:08,400
ganz ganz viele Leute und ich 
hau da tausende Teller raus, so 

587
00:32:08,400 --> 00:32:10,480
in der Implementierung. 
Jetzt ja. 

588
00:32:11,280 --> 00:32:14,520
Und je nachdem, wie Feingranular
die Auswahl am Befehl ist, 

589
00:32:14,520 --> 00:32:17,760
wieviel Funktionen das sind, 
nicht einfach sowas wie nimm 

590
00:32:17,760 --> 00:32:21,360
Vorspeise, sondern nimm bisschen
davon, ist eine Funktion 

591
00:32:21,360 --> 00:32:23,920
bisschen davon also übertrieben 
ja und du hast ganz ganz viele 

592
00:32:23,920 --> 00:32:26,640
Funktionen die da aufgerufen 
werden, dann ist das n ziemlich 

593
00:32:26,640 --> 00:32:28,880
großer Overhead am Ende. 
Definitiv. 

594
00:32:29,360 --> 00:32:32,680
Also das ist auf jeden Fall n 
guter Punkt, woran ich 

595
00:32:32,680 --> 00:32:34,760
wahrscheinlich auch nicht als 
erstes gedacht hätte, aber es 

596
00:32:34,760 --> 00:32:37,720
ist auf jeden Fall sehr, sehr 
wichtig, dass man da, also dass 

597
00:32:37,720 --> 00:32:40,320
man. 
Dem Halt also, dass man bewusst,

598
00:32:40,960 --> 00:32:42,800
dass es einem bewusst ist. 
So. 

599
00:32:43,120 --> 00:32:47,200
Und was ich jetzt vielleicht 
nicht unbedingt als Nachteil 

600
00:32:47,200 --> 00:32:52,240
hinstellen würde, was aber auch 
wichtig ist zu sensibilisieren, 

601
00:32:52,240 --> 00:32:58,880
finde ich, ist beispielsweise, 
dass man durchaus wissen sollte,

602
00:32:59,600 --> 00:33:03,040
dass man relativ, dass es auch 
durchaus relativ schnell möglich

603
00:33:03,040 --> 00:33:06,080
ist, eine Menge Logik in diesem 
Bilder rein zu ballern, so, das 

604
00:33:06,080 --> 00:33:10,320
heißt, so ein Bilder kann im. 
Worst Case auch relativ schnell 

605
00:33:11,280 --> 00:33:15,160
komplex werden eine hohe viel 
Logik haben und vielleicht auch 

606
00:33:15,160 --> 00:33:18,480
irgendwann das Ganze schwierig 
machen zu warten. 

607
00:33:18,480 --> 00:33:21,960
Also natürlich nur, wenn man 
nicht wirklich aufpasst. 

608
00:33:21,960 --> 00:33:26,680
Wichtig ist oder was ich 
versuchen will zu sagen ist man 

609
00:33:26,680 --> 00:33:29,200
muss. 
Gucken, wie man Bilder 

610
00:33:29,200 --> 00:33:31,640
implementiert dass es nicht 
komplett ausufert, dass man 

611
00:33:31,640 --> 00:33:33,360
nicht einfach nur sagt, Ach 
komm, ich hau jetzt hier noch 

612
00:33:33,360 --> 00:33:35,240
was dran, ich hau jetzt da noch 
was dran, sondern wirklich immer

613
00:33:35,240 --> 00:33:38,080
noch die Sinnhaftigkeit dahinter
zu packen und zu sagen, ist es 

614
00:33:38,080 --> 00:33:43,240
jetzt gut, passt das noch zu 
meinem Konzept und ist das jetzt

615
00:33:43,240 --> 00:33:45,160
nicht vielleicht Missbrauch ich 
das ganze jetzt nicht zum 

616
00:33:45,160 --> 00:33:47,480
Beispiel ne, also das ist halt 
immer n bisschen und dass man 

617
00:33:47,480 --> 00:33:49,840
halt auch regelmäßig das ganze 
Refact hat sollte man n Punkt 

618
00:33:49,840 --> 00:33:52,360
kommen wo man sagt, Oh was ist 
denn hier los, das ist ja 

619
00:33:52,360 --> 00:33:54,720
irgendwie ich ich ich versteh es
nicht mehr oder was auch immer 

620
00:33:54,720 --> 00:33:56,400
ne also das sind halt wichtige 
Punkte. 

621
00:33:57,080 --> 00:33:59,760
Dem man sich irgendwie 
Bewusstsein sollte, weil das 

622
00:33:59,760 --> 00:34:02,960
kann natürlich auch ohne 
Bilderpattern passieren. 

623
00:34:02,960 --> 00:34:05,840
Nur meine Erfahrung ist, dass 
wenn du ein Bilderpattern nutzt,

624
00:34:06,480 --> 00:34:09,600
dann kann es halt relativ 
schnell sein, dass vielleicht 

625
00:34:09,600 --> 00:34:12,199
auch gerade wenn man im Team 
arbeitet, alle irgendwie was da 

626
00:34:12,199 --> 00:34:14,600
mit Reinklatschen und 
draufpacken und ach, wir haben 

627
00:34:14,600 --> 00:34:17,239
ja hier ein Bilder für, da mache
ich dies noch, da mache ich das 

628
00:34:17,239 --> 00:34:20,560
noch und am Ende hast du zwar 
ein Bilderpattern was wenn du 

629
00:34:20,560 --> 00:34:24,159
gutes Bilderpattern hast. 
Dann hilft dir das richtig gut 

630
00:34:24,159 --> 00:34:26,159
weiter. 
Aber ein schlechtes Bilder 

631
00:34:26,159 --> 00:34:29,840
pattern oder 1 was irgendwann 
völlig verhackstückelt wird oder

632
00:34:29,840 --> 00:34:32,760
für verschiedene Zwecke 
missbraucht wird, das bringt 

633
00:34:32,760 --> 00:34:35,159
dich irgendwann halt auch nicht 
mehr wirklich weiter und da muss

634
00:34:35,159 --> 00:34:37,040
man finde ich ein bisschen 
aufpassen am Ende. 

635
00:34:37,840 --> 00:34:40,239
Ja, das ist ein sehr guter 
Punkt, weil das klassische 

636
00:34:40,239 --> 00:34:45,040
Bilder pattern, wenn man das 
halt wirklich falsch nutzt, wie 

637
00:34:45,040 --> 00:34:47,760
du meintest, hast du halt zum 
Beispiel eine fehlende 

638
00:34:47,760 --> 00:34:49,600
Validierung deines Objekts am 
Ende. 

639
00:34:50,000 --> 00:34:52,880
Ja, weil diese Funktionen, die 
du aufrufst, um dein Objekt 

640
00:34:52,880 --> 00:34:56,480
zusammenzubauen, müssen ja nicht
aufgerufen werden. 

641
00:34:56,719 --> 00:34:58,560
Genau, und wenn du dann nicht 
aufpasst, hast du halt 

642
00:34:58,560 --> 00:35:01,120
undefinierte Werte da drin oder 
kannst gar nicht so weiter 

643
00:35:01,120 --> 00:35:03,360
arbeiten mit dem Objekt wie du 
es gerne machen möchtest. 

644
00:35:03,600 --> 00:35:06,800
Das knallt dann irgendwo in der 
Software, da muss man halt 

645
00:35:06,800 --> 00:35:09,120
aufpassen, dass man halt auch 
wirklich sicherstellt, dass 

646
00:35:09,120 --> 00:35:11,440
gültige Objekte sozusagen am 
Ende rauskommen. 

647
00:35:11,440 --> 00:35:14,520
Ja, genau das ist auf jeden Fall
ein sehr wichtiger Punkt, den du

648
00:35:14,520 --> 00:35:16,320
da genannt hast. 
Ich mein, das kannst du 

649
00:35:16,320 --> 00:35:19,280
theoretisch ja am Ende immer 
machen, aber wie gesagt führt 

650
00:35:19,280 --> 00:35:23,520
auch am Ende wieder zur Logik 
ne, die dann halt eben auch 

651
00:35:23,520 --> 00:35:25,680
vielleicht wieder abgetestet 
werden sollte und so weiter und 

652
00:35:25,680 --> 00:35:28,880
sofort ne. 
Das ist natürlich, wie gesagt, 

653
00:35:28,880 --> 00:35:31,800
muss man halt und das das Ding 
ist natürlich am Ende auch 

654
00:35:31,800 --> 00:35:34,240
wieder so und deswegen sagen wir
eigentlich, in jeder Folge 

655
00:35:34,240 --> 00:35:36,800
probiert Liebe zu Liebe, 
zuhören, probieren, einfach das 

656
00:35:36,800 --> 00:35:39,240
auch mal aus, wenn du zum 
Beispiel sagst, ich hab noch nie

657
00:35:39,240 --> 00:35:42,240
n bilderpad dann ausprobiert, 
einfach mal implementieren, 

658
00:35:42,240 --> 00:35:45,000
einfach mal gucken für n 
entsprechenden Zweck, vielleicht

659
00:35:45,000 --> 00:35:47,040
auch einfach für n konstruiertes
Beispiel einfach mal um das 

660
00:35:47,040 --> 00:35:49,720
Feeling dafür zu kriegen, zu 
sagen, wie ist denn das jetzt 

661
00:35:49,720 --> 00:35:52,800
so, macht es Spaß oder nicht. 
Zum Beispiel Unser Befehl 

662
00:35:52,800 --> 00:35:59,000
Beispiel genau. 
Ich würde gerne, weil du, du 

663
00:35:59,000 --> 00:36:03,840
hast es schon angesprochen, so 
hey, so in der Form nutzt. 

664
00:36:03,840 --> 00:36:06,640
Also ich nutz n Bilder pattern 
aber gar nicht so im klassischen

665
00:36:06,640 --> 00:36:09,760
Sinne, ja oder ich hab es sehr 
oft in Frameworks in anderer 

666
00:36:09,760 --> 00:36:12,960
Form gesehen und da möchte ich 
jetzt so zum Schluss noch mal 

667
00:36:12,960 --> 00:36:16,880
drauf eingehen, bevor wir sag 
ich mal so n Fazit noch ziehen. 

668
00:36:16,880 --> 00:36:20,320
Ja wie sieht das so in modernen 
Frameworks aus und wie wird da 

669
00:36:20,320 --> 00:36:23,880
das Bilder Pattern verwendet und
da spricht man halt oft von dem 

670
00:36:23,880 --> 00:36:28,000
Fluent Fluent Bilder und. 
Nicht Pattern, Flur und Bilder 

671
00:36:28,800 --> 00:36:31,520
und das kann man so ein bisschen
sagen. 

672
00:36:31,520 --> 00:36:35,680
Klassiker neu interpretiert so 
also moderne Umsetzung dieses 

673
00:36:35,680 --> 00:36:39,440
Klassikers. 
Ja, und das findet man halt oft 

674
00:36:40,320 --> 00:36:44,880
in modernen Code oder modernen 
Frameworks und dabei ist es 

675
00:36:44,880 --> 00:36:48,160
quasi der gleiche Grundgedanke, 
aber einfach schlanker 

676
00:36:48,160 --> 00:36:53,280
umgesetzt, man hat sich halt 
gedacht, dieses Interface und 

677
00:36:53,280 --> 00:36:56,160
ein Director. 
Ich weiß nicht, das ist halt so 

678
00:36:56,160 --> 00:37:00,720
viel spoilerplate Code am Ende. 
Ne weiß ich nicht und deswegen 

679
00:37:00,720 --> 00:37:03,920
hat man einfach gesagt oder geht
man nen anderen Weg und sagt OK 

680
00:37:03,920 --> 00:37:08,400
wir lassen das Weg und wir 
verwenden die Methodik der 

681
00:37:08,400 --> 00:37:13,440
Method Chaining ja also ne 
Verkettung an Funktionsaufrufen 

682
00:37:13,760 --> 00:37:17,360
und das hat 100 Pro jeder früher
oder später irgendwann mal 

683
00:37:17,360 --> 00:37:19,760
gesehen ja, aber vielleicht 
nicht. 

684
00:37:20,120 --> 00:37:22,880
Aktiv drüber nachgedacht warum 
mach ich das hier eigentlich 

685
00:37:22,880 --> 00:37:25,200
gerade? 
Warum sieht das so komisch aus? 

686
00:37:25,200 --> 00:37:28,000
Vielleicht, wenn man das zum 
ersten Mal sieht, ne, dass du so

687
00:37:28,000 --> 00:37:30,320
ganz viele Funktionen 
verschachtelst, aber 

688
00:37:30,320 --> 00:37:33,360
verschachtelt im Sinne wirklich 
verkettest, also immer wieder 

689
00:37:33,360 --> 00:37:36,960
das Ergebnis einer Funktion 
gleichzeitig darauf wieder ne 

690
00:37:36,960 --> 00:37:41,080
Funktion aufrufst und dann 
bilden sich so so Ketten sag ich

691
00:37:41,080 --> 00:37:43,680
mal und am Ende kriegst du n 
Ergebnis raus. 

692
00:37:44,000 --> 00:37:48,320
Ja und genauso nutzt man denn 
quasi im Fluent Builder. 

693
00:37:48,640 --> 00:37:51,760
Diese Möglichkeit, also diese 
Methodik um ein Builder Pattern 

694
00:37:51,760 --> 00:37:55,280
umzusetzen, das heißt, man kann 
sich das jetzt so vorstellen, 

695
00:37:55,320 --> 00:37:58,320
man nimmt so diese klassische 
Methodik weg, man hat immer noch

696
00:37:58,320 --> 00:38:02,880
sein Produkt, ja, also du hast 
immer noch deinen Essensteller 

697
00:38:02,960 --> 00:38:05,720
und du hast auch immer noch ein 
Builder, aber jetzt 

698
00:38:05,720 --> 00:38:08,960
instanziierst Du einen neuen 
Builder für deinen Teller. 

699
00:38:09,440 --> 00:38:14,240
Ja, also zum Beispiel einfach 
New Plate Builder, rufst den 

700
00:38:14,240 --> 00:38:17,280
Konstruktor auf. 
Und machst dann aber und 

701
00:38:17,280 --> 00:38:20,640
verwendest dann quasi gleich 
direkt die Funktion des Bilders.

702
00:38:20,640 --> 00:38:23,840
Das heißt, du machst dann zum 
Beispiel ja, also in klassischen

703
00:38:23,840 --> 00:38:28,800
Sprachen sagst du dann Punkt mit
Vorspeise und gibst ein 

704
00:38:28,800 --> 00:38:33,040
Parameter rein. 
Antipasti so, das heißt, du 

705
00:38:33,040 --> 00:38:35,760
sagst, ich möchte auf diesen 
Teller die Vorspeise, Antipasti 

706
00:38:36,160 --> 00:38:41,840
und jetzt sagst du aber wiederum
aber Punkt mit Hauptgang. 

707
00:38:42,280 --> 00:38:44,480
Lasagne? 
Ja einfach noch verkettet da 

708
00:38:44,480 --> 00:38:46,960
dran und so weiter und 
verkettest dann komplett deine 

709
00:38:46,960 --> 00:38:52,640
Konfiguration und am Ende sagst 
du keine Ahnung Get Plate und du

710
00:38:52,640 --> 00:38:55,920
kriegst dann wirklich ein Plate 
Objekt mit diesen Eigenschaften 

711
00:38:55,920 --> 00:38:58,080
zurück. 
Ja, oft wird das ja zum Beispiel

712
00:38:58,080 --> 00:39:00,280
auch dann so gemacht. 
Also ich kenn das halt so, aber 

713
00:39:00,280 --> 00:39:02,720
das erste Mal, als ich das auch 
gesehen hab oder was ja auch oft

714
00:39:02,720 --> 00:39:06,720
gerne gemacht wird, ist dann so 
n punktbild ne, das wird dann 

715
00:39:07,040 --> 00:39:09,040
oft gemacht. 
Ganz klassische. 

716
00:39:09,080 --> 00:39:11,280
Genau, also das wird halt 
vielleicht ich. 

717
00:39:11,280 --> 00:39:13,480
Ich hab frag mich auch so, also 
gerade wenn du sowas machst find

718
00:39:13,480 --> 00:39:17,360
ich sowas wie n getplate dann 
irgendwie schöner ne, aber ich 

719
00:39:17,360 --> 00:39:19,760
glaube, dass so n Punkt Bild 
halt oft gemacht wird um halt 

720
00:39:19,760 --> 00:39:21,600
eben auch wirklich zu 
signalisieren Ey hier wird n 

721
00:39:21,600 --> 00:39:24,440
bilderpattern jetzt gebaut. 
Ja genau, also hier wird es 

722
00:39:24,440 --> 00:39:26,480
erstens jetzt gebaut und 
zweitens hier ist es ist 

723
00:39:26,480 --> 00:39:29,840
sozusagen n bilderpattern was 
ich also ne so n fluent Bilder 

724
00:39:29,840 --> 00:39:33,360
dann aber was ich am Anfang 
interessant fand wo ich das das 

725
00:39:33,360 --> 00:39:35,520
erste Mal gesehen hab ne es ist 
keine Ahnung. 

726
00:39:36,080 --> 00:39:40,160
Das ist vorgestern gewesen sein.
Ja, in der Vorbereitung hier. 

727
00:39:40,880 --> 00:39:43,320
Keine Ahnung. 
So im Studium Anfang des 

728
00:39:43,320 --> 00:39:46,840
Studiums irgendwie so ne im 
ersten Drittel und dann denkst 

729
00:39:46,840 --> 00:39:50,520
du dir so hä ey ich versteh grad
nicht wieso kann er denn jetzt 

730
00:39:50,520 --> 00:39:54,920
sagen mach mal also nimm gib mir
eben Bilder mit was weiß ich was

731
00:39:54,920 --> 00:39:57,600
hast du gesagt with starter with
main with the sair oder was auch

732
00:39:57,600 --> 00:40:01,680
immer ne und wie wie kann es 
sein, dass er jetzt sozusagen. 

733
00:40:02,560 --> 00:40:05,240
Wie, dass du immer was reingeben
kannst und dann diese Funktion 

734
00:40:05,240 --> 00:40:06,800
auf sich also immer wieder 
aufrufen kannst. 

735
00:40:06,800 --> 00:40:08,400
Also wie geht das? 
Das hat da hab ich hab ich 

736
00:40:08,400 --> 00:40:13,360
irgendwie nimmer genau bis ich 
dann irgendwann halt auch 

737
00:40:13,360 --> 00:40:16,240
dahinter gekommen bin und dann 
gesagt hab OK der Builder ne 

738
00:40:16,240 --> 00:40:19,200
dieser über den wir gerade 
geredet haben, der gibt halt 

739
00:40:19,200 --> 00:40:21,920
einfach, also der Return des 
Builders ist immer This, also 

740
00:40:21,920 --> 00:40:25,440
immer in sich, also sich selbst.
Also wenn man jetzt in Java 

741
00:40:25,440 --> 00:40:27,240
spricht, ich glaub wir hatten 
Java vorhin angesprochen, 

742
00:40:27,240 --> 00:40:28,720
deswegen ist das in meinem Kopf 
das Bild. 

743
00:40:29,240 --> 00:40:32,720
Aber ergibt immer sich selbst 
als Objekt zurück, was bedeutet,

744
00:40:32,720 --> 00:40:35,600
dass wenn du ne Funktion 
aufgerufen hast, dass die also 

745
00:40:35,600 --> 00:40:37,760
auf einem Objekt und dieses 
Objekt sich selber wieder 

746
00:40:37,760 --> 00:40:40,400
zurückgibt, kannst du natürlich 
logischerweise als Return Value 

747
00:40:40,560 --> 00:40:43,720
weiter auf diesem Objekt 
arbeiten, was eben wiederum die 

748
00:40:43,720 --> 00:40:45,520
Funktion hat, ne. 
Genau. 

749
00:40:45,520 --> 00:40:47,640
Und du hast alle 
Konfigurationen, die erledigt 

750
00:40:47,640 --> 00:40:49,680
sind. 
Abgespeichert im Prinzip. 

751
00:40:49,840 --> 00:40:52,520
Du kannst halt genau dieses 
Schritt für Schritt am Befehl 

752
00:40:52,520 --> 00:40:55,120
lang gehen. 
Ja und dir dein Essen auftun 

753
00:40:55,120 --> 00:40:58,320
sozusagen, und du sparst dir 
halt den Director, weil du mit 

754
00:40:58,320 --> 00:41:02,080
diesen Funktionsverkettungen die
Reihenfolge der Kette, dir den 

755
00:41:02,080 --> 00:41:05,040
Director ja quasi ja wird ja 
obsolet, weil du ja dann in dem 

756
00:41:05,040 --> 00:41:08,720
Falle schon die Reihenfolge 
festlegst genau ja, und du 

757
00:41:08,720 --> 00:41:10,560
brauchst halt auch kein 
Interface wie n Builder 

758
00:41:10,560 --> 00:41:13,200
aussieht, weil der Builder hat 
jetzt die Funktion und ich kann 

759
00:41:13,200 --> 00:41:16,320
jetzt. 
Fluent ja, also wirklich einfach

760
00:41:16,320 --> 00:41:19,040
selbst definieren, wie ich da 
die Aufrufe mache. 

761
00:41:19,360 --> 00:41:21,200
Ja. 
Obacht, wieder im Thema 

762
00:41:21,200 --> 00:41:24,360
Validierung am Ende ne es 
gewährleistet jetzt keiner, dass

763
00:41:24,360 --> 00:41:27,840
ich alle, also alle Funktionen 
in meiner Kette drin hab. 

764
00:41:28,080 --> 00:41:29,800
Ja richtig, das ist halt jetzt 
wirklich wieder dieser 

765
00:41:29,800 --> 00:41:32,520
Validierungspunkt am Ende, ich 
find das eben, wo wir aber zum 

766
00:41:32,520 --> 00:41:35,240
Beispiel am Ende ganz kurz, 
sorry in dieser Bild wie du 

767
00:41:35,240 --> 00:41:37,040
meintest ja klassisch abfangen 
kannst. 

768
00:41:37,040 --> 00:41:39,760
Genau kann man auf jeden Fall 
machen, ist halt die Frage 

769
00:41:39,760 --> 00:41:41,600
wieviel man dann am Ende 
sozusagen zulässt. 

770
00:41:41,600 --> 00:41:43,680
Ne. 
Oder halt eben auch nicht. 

771
00:41:44,240 --> 00:41:46,880
Aber, und das finde ich ja, auf 
das ist halt auf der einen Seite

772
00:41:46,880 --> 00:41:48,880
oder auf der haben Seite ist 
halt eben das, sowas ist super 

773
00:41:48,880 --> 00:41:52,400
lesbar oft ne also wenn du es 
richtig machst, dann kann ich es

774
00:41:52,400 --> 00:41:55,440
wirklich genau, dann kannst du 
halt den Code wirklich relativ 

775
00:41:55,440 --> 00:41:58,720
einfach verständlich lesen, also
wie als wäre es ein Buch sag ich

776
00:41:58,720 --> 00:42:02,640
jetzt mal auf der anderen Seite 
könntest du aber auch wenn du es

777
00:42:02,640 --> 00:42:05,480
falsch anwendest dir denken, so 
was passiert denn da eigentlich 

778
00:42:05,480 --> 00:42:07,440
gerade weil wenn du zum Beispiel
diesen. 

779
00:42:07,920 --> 00:42:11,120
Plate Bilder nimmst zum Beispiel
und sagst Whist Data Salat, 

780
00:42:11,120 --> 00:42:12,920
Whist, Data Antipasti, Whist 
Data. 

781
00:42:12,920 --> 00:42:15,760
Dass das dann weißt du auch, zum
Beispiel nicht hundertprozentig,

782
00:42:15,840 --> 00:42:19,120
füg ich jetzt mehrere Data 
hinzu, also kann ich jetzt n 

783
00:42:19,120 --> 00:42:22,640
Salat und antipasti essen oder 
sag ich mir zum Beispiel oder 

784
00:42:22,640 --> 00:42:25,680
überschreibst du das oder ist 
das überhaupt valide, zweimal 

785
00:42:25,680 --> 00:42:28,120
woist Data aufzurufen? 
Also du könntest ja einfach 

786
00:42:28,120 --> 00:42:30,720
hundertmal Woist Data aufrufen 
und sagen und ab. 

787
00:42:30,720 --> 00:42:36,160
Dafür und ja klar, und du weißt 
halt natürlich nicht erstmal von

788
00:42:36,160 --> 00:42:39,360
außen. 
Addet er das sozusagen, hab ich 

789
00:42:39,360 --> 00:42:41,320
jetzt ne Liste an Starter oder 
überschreibe ich die wie du 

790
00:42:41,320 --> 00:42:43,200
gerade meintest? 
Das ist halt genau das Ding, 

791
00:42:43,200 --> 00:42:45,800
denn dabei, ja und? 
Das ist halt dann im Endeffekt n

792
00:42:45,800 --> 00:42:49,920
bisschen die Kunst zu sagen, OK,
wie baut man jetzt so n Bilder 

793
00:42:49,920 --> 00:42:52,480
auf oder so n Flur und Bilder in
dem Fall jetzt in diesem 

794
00:42:52,480 --> 00:42:56,720
konkreten, dass er auch wirklich
irgendwie, sagen wir mal schön 

795
00:42:56,720 --> 00:42:59,680
aussieht, dass er ne 
beziehungsweise nicht nur schön 

796
00:42:59,680 --> 00:43:01,800
aussieht, sondern dass er halt 
eben auch gut implementiert ist 

797
00:43:01,800 --> 00:43:06,240
und sowas vielleicht irgendwie. 
Intuitiv dann eben kapselt, aber

798
00:43:06,240 --> 00:43:08,880
ein bisschen wissen wird immer 
vorausgesetzt, wenn du Bilder 

799
00:43:09,440 --> 00:43:12,120
anwendest. 
Ja, ich finde schön ist ein 

800
00:43:12,120 --> 00:43:15,760
gutes Stichwort für eine 
Überleitung, um mal so bekannte 

801
00:43:15,760 --> 00:43:19,040
Beispiele zu nennen oder 
Frameworks und Sprachen, die auf

802
00:43:19,040 --> 00:43:23,120
dieses Pattern, sage ich mal, 
darauf zurückgreifen. 

803
00:43:23,120 --> 00:43:27,000
Ja, und das sind ja oft schöne 
Implementierungen, also man 

804
00:43:27,000 --> 00:43:31,560
sieht das halt auch sehr oft im 
zum Beispiel bei Springboot gibt

805
00:43:31,560 --> 00:43:35,600
es das viel. 
Du hast halt auch so so Bilder 

806
00:43:35,600 --> 00:43:39,920
Patterns in Lombok zum Beispiel,
ich mein oder auch gerade wenn 

807
00:43:39,920 --> 00:43:44,680
ich jetzt so Calls mache, ne, 
also beispielsweise ich schreib 

808
00:43:44,680 --> 00:43:48,080
jetzt ich hab jetzt n frontend 
und möchte jetzt rest Calls 

809
00:43:48,560 --> 00:43:50,840
absenden und ich verwende 
verschiedene Bibliotheken dafür,

810
00:43:50,840 --> 00:43:52,480
dann hast du ja auch oft sowas 
wie. 

811
00:43:52,800 --> 00:43:57,680
Set Header, Set body und du also
kapselst du chainst halt diese 

812
00:43:57,680 --> 00:44:01,360
Aufrufe, um am Ende dein request
Objekt sozusagen zu haben, was 

813
00:44:01,360 --> 00:44:04,320
du denn Absendest 
beispielsweise, das geht ja auch

814
00:44:04,320 --> 00:44:08,040
in die Richtung, ja, dass das N 
Builder ist am Ende oder im 

815
00:44:08,040 --> 00:44:10,960
mobile App Bereich. 
Ja wir haben zum Beispiel ja 

816
00:44:10,960 --> 00:44:14,920
schon mit Flatter rumgespielt, 
ist auch ne ganz coole Sache und

817
00:44:14,920 --> 00:44:18,320
Dart als Sprache setzt ja auch 
auf diese Konstrukte. 

818
00:44:18,400 --> 00:44:21,040
Ja gerade wenn du jetzt zum 
Beispiel deine UI Elemente 

819
00:44:21,040 --> 00:44:22,640
zusammenbaust, dann hast du auch
oft. 

820
00:44:22,800 --> 00:44:26,960
Unter der Haube diese 
bilderpattern ich kann mich 

821
00:44:26,960 --> 00:44:31,360
erinnern, ne und da sieht man 
ja, dass es halt schon seine 

822
00:44:31,360 --> 00:44:34,440
Daseinsberechtigung hat. 
Ja, definitiv. 

823
00:44:34,440 --> 00:44:38,240
Also ich würde halt auch sagen, 
dass prinzipiell Bilderpattern 

824
00:44:38,240 --> 00:44:42,960
schon auch viel genutzt werden. 
Also das ist jetzt zum Beispiel 

825
00:44:43,280 --> 00:44:46,000
schon, auch weil wir jetzt 
beispielsweise Singleton auch 

826
00:44:46,000 --> 00:44:48,560
hatten würde ich würde ich 
sagen, dass es mehr 

827
00:44:48,560 --> 00:44:51,360
Bilderpattern und Bilderpatterns
öfter eingesetzt werden als 

828
00:44:51,360 --> 00:44:54,440
Singletons auch. 
Aber dass sie jetzt auch nicht 

829
00:44:54,440 --> 00:44:57,760
exorbitant eingesetzt werden. 
Also es ist halt auch oft so, 

830
00:44:57,760 --> 00:45:00,320
dass ich mir manchmal denke, oh,
ihr könnt n bilderpattern nehmen

831
00:45:00,480 --> 00:45:02,280
und dann denke ich noch ein 
bisschen drüber nach und denke 

832
00:45:02,280 --> 00:45:04,960
mir dann auch gleichzeitig 
wieder oder kurz danach, 

833
00:45:05,600 --> 00:45:08,560
eigentlich brauche ich das auch 
nicht so, also ich finde es ist 

834
00:45:08,880 --> 00:45:11,760
jetzt nicht irgendwie 
inflationär gesät, dass man 

835
00:45:11,760 --> 00:45:15,440
einfach überall bilderpattern 
hat, aber es gibt halt gute 

836
00:45:15,440 --> 00:45:18,440
Möglichkeiten eben so n 
Bilderpattern einzusetzen und 

837
00:45:18,440 --> 00:45:20,560
dafür ist es halt eben aber auch
wichtig zu wissen. 

838
00:45:21,360 --> 00:45:24,280
Es gibt ein Bilderpattern und 
wie verwende ich ein oder baue 

839
00:45:24,280 --> 00:45:27,200
ein Bilderpattern. 
Das ist halt in dem Fall, das 

840
00:45:27,200 --> 00:45:30,960
ist eigentlich genau der 
richtige Punkt zu sagen wann. 

841
00:45:30,960 --> 00:45:33,680
Wie, wo, was? 
Ja und du hast ja so schön 

842
00:45:33,680 --> 00:45:37,360
angefangen, magst du vielleicht 
zum Abschluss der Folge mal so 

843
00:45:37,360 --> 00:45:41,440
ein Fazit sehen? 
Wann würdest du sagen, da 

844
00:45:42,000 --> 00:45:44,240
verwende ich das Bilderpattern, 
da macht es Sinn. 

845
00:45:44,720 --> 00:45:46,080
Genau. 
Also wenn du halt viele 

846
00:45:46,080 --> 00:45:48,920
optionale Konfigurationsfelder 
hast beispielsweise, dann macht 

847
00:45:48,920 --> 00:45:50,560
das Sinn, wenn du generell 
viele. 

848
00:45:51,040 --> 00:45:53,160
Parameter hast, die du irgendwie
in konstruktor reingeben 

849
00:45:53,160 --> 00:45:56,960
würdest, wenn du verschiedene 
Objektvarianten hast, wo du 

850
00:45:56,960 --> 00:45:59,200
sagst, OK, das ist aber immer 
dieses eine Objekt. 

851
00:45:59,200 --> 00:46:01,600
Es hat aber unterschiedliche 
Ausprägungen. 

852
00:46:01,600 --> 00:46:04,720
Du willst aber auf der anderen 
Seite auch nicht alles wieder in

853
00:46:04,800 --> 00:46:08,640
was weiß ich wie viele Tiefen 
von Abstraktionen einbetten, 

854
00:46:08,720 --> 00:46:13,280
weil es vielleicht auch in dem 
Fall einfach nicht gut wäre. 

855
00:46:13,280 --> 00:46:15,640
Das ist halt immer sehr sehr. 
Also ich find da geht auch immer

856
00:46:15,640 --> 00:46:18,880
n bisschen Erfahrung mit einher,
so dieses Feingefühl zu sagen 

857
00:46:18,880 --> 00:46:20,200
wann macht es Sinn und wann 
nicht. 

858
00:46:21,120 --> 00:46:23,880
Auch wenn jetzt zum Beispiel, 
wenn du jetzt Objekte mit 

859
00:46:23,880 --> 00:46:28,360
rekursivem Aufbau hast oder so 
ne, also so n Dom beispielsweise

860
00:46:28,360 --> 00:46:30,000
im Frontend ist so n schönes 
Beispiel dafür. 

861
00:46:31,360 --> 00:46:34,200
Und ja ansonsten. 
Gerade weil du es da drin 

862
00:46:34,200 --> 00:46:35,920
verkapseln kannst, dann halt 
auch ne. 

863
00:46:36,560 --> 00:46:38,240
Stimmt. 
Und was wir eben ja auch schon 

864
00:46:38,240 --> 00:46:40,720
meinten, wenn man jetzt 
irgendwie sauberen, lesbaren 

865
00:46:40,720 --> 00:46:44,560
Code haben möchte, ist halt n 
bilderpad dann schon ganz schön 

866
00:46:44,880 --> 00:46:47,200
ne. 
Also da, das ist halt einfach. 

867
00:46:47,680 --> 00:46:51,520
Ne gute Möglichkeit einfach ne 
schöne Lesbarkeit einfach von 

868
00:46:51,600 --> 00:46:54,400
diesem Code zu erzeugen, weil es
einfach besser ist als zu sagen 

869
00:46:54,560 --> 00:46:57,680
ey ich erzeug jetzt hier, ich 
mach jetzt n konstruktor und hab

870
00:46:57,680 --> 00:47:00,880
da 1000 Parameter, so hast du ja
wie noch ne kleine Beschreibung 

871
00:47:00,880 --> 00:47:03,960
über diese Funktion, 
beispielsweise dass du siehst, 

872
00:47:03,960 --> 00:47:05,680
OK, das passiert jetzt, das 
passiert jetzt, das passiert 

873
00:47:05,680 --> 00:47:08,240
jetzt ne wann ich es jetzt zum 
Beispiel nicht einwenden würde 

874
00:47:08,240 --> 00:47:10,480
ist, wenn du kleine Objekte hast
ne du hast vielleicht irgendwie 

875
00:47:10,640 --> 00:47:15,520
2 bis 3 Parameter oder am besten
noch weniger so dann reicht n 

876
00:47:15,520 --> 00:47:17,560
einfacher konstruktor du weißt 
eigentlich relativ. 

877
00:47:17,680 --> 00:47:19,280
Schnell OK, was passiert hier 
überhaupt? 

878
00:47:20,400 --> 00:47:23,320
Oder du guckst einmal eben kurz 
da rein in den Konstruktor und 

879
00:47:23,320 --> 00:47:26,800
siehst OK, diese beiden Werte 
werden gesetzt, macht schon 

880
00:47:26,800 --> 00:47:31,360
Sinn, passt alles ne dann 
beispielsweise was du ja auch 

881
00:47:31,360 --> 00:47:34,320
meintest, Performance sensible 
Bereiche würde ich es auch nicht

882
00:47:34,320 --> 00:47:37,840
unbedingt einsetzen, weil ne 
hattest du ja so schön erklärt, 

883
00:47:37,840 --> 00:47:40,400
muss jetzt nicht noch mal 
wiederholen und. 

884
00:47:41,640 --> 00:47:44,840
Ja, einmalige Objektinstanzen 
ohne Wiederverwendung. 

885
00:47:44,840 --> 00:47:47,760
Wenn du halt wirklich mal, sagen
wir mal selten mal ne Instanz 

886
00:47:47,760 --> 00:47:51,120
irgendwie erzeugen musst, warum 
dann die ganzen Bilder dieses 

887
00:47:51,120 --> 00:47:54,240
diesen Overhead dazu bauen? 
Wenn du aber eigentlich gar 

888
00:47:54,240 --> 00:47:57,600
nicht, wenn das jetzt ne 
seltene, wenn das jetzt selten 

889
00:47:57,600 --> 00:48:00,080
instanziert wird, beispielsweise
ne, weil wie gesagt es kommt 

890
00:48:00,080 --> 00:48:03,920
Komplexität obendrauf. 
Und man muss halt eben auch 

891
00:48:03,920 --> 00:48:06,720
genau gucken, okay was ist dann 
im Endeffekt valide und was 

892
00:48:06,720 --> 00:48:09,840
nicht und wie also wie gesagt, 
du bist frei in der Anwendung 

893
00:48:09,840 --> 00:48:12,400
von diesem Bilder Pattern und da
muss man eben halt auch gucken 

894
00:48:12,400 --> 00:48:17,480
okay nimmt man es hin und sagt 
der oder der Programmierer die 

895
00:48:17,480 --> 00:48:21,280
Programmieren wird das schon 
verstehen oder man muss halt 

896
00:48:21,280 --> 00:48:24,320
eine Menge sozusagen abfangen 
vielleicht oder sehr viel Logik 

897
00:48:24,320 --> 00:48:28,000
einbauen. 
Ja, ich finde den letzten Punkt 

898
00:48:28,000 --> 00:48:32,000
halt auch wirklich gut. 
Zu sagen, wie oft brauche ich. 

899
00:48:32,320 --> 00:48:35,920
Eine Variante dieses Objekts 
davon, wie oft instanziiere ich 

900
00:48:35,920 --> 00:48:40,800
das, weil man muss auch sagen, 
diese Wahl des Patterns, ob ich 

901
00:48:40,800 --> 00:48:43,840
ein bilderpattern brauche, ist 
auch irgendwo kontextabhängig, 

902
00:48:43,840 --> 00:48:46,800
ne in welchem Rahmen 
programmiere ich gerade. 

903
00:48:47,160 --> 00:48:50,480
Es macht natürlich absolut Sinn,
wie ich meinte, dass du ja in 

904
00:48:50,480 --> 00:48:54,360
verschiedenen Frameworks für 
Sprachen zum Beispiel so ein 

905
00:48:54,360 --> 00:48:58,560
HTTP client hast, der so ein 
Bilderpattern implementiert hat,

906
00:48:58,560 --> 00:49:01,680
unter der Haube ne weil. 
Da ist der Kontext. 

907
00:49:01,680 --> 00:49:06,360
Ich muss alle Arten von Request 
irgendwie ermöglichen und 

908
00:49:06,360 --> 00:49:08,400
zusammenbauen können für den 
Anwender. 

909
00:49:08,800 --> 00:49:12,160
Das heißt ich hab ne enorme 
Vielfalt und möchte aber diese 

910
00:49:12,160 --> 00:49:15,120
Flexibilität sauber darstellen, 
das ist ja n ganz anderer 

911
00:49:15,120 --> 00:49:19,200
Kontext als zu sagen ich 
implementiere jetzt ein Call 

912
00:49:19,600 --> 00:49:21,640
weil ich hab jetzt nur einen 
Endpunkt den ich anspreche in 

913
00:49:21,640 --> 00:49:23,840
meiner Software und ich wir 
gehen mal davon aus wir 

914
00:49:23,840 --> 00:49:25,760
verwenden jetzt nicht dieses 
Framework mit den Bildern weil 

915
00:49:25,760 --> 00:49:27,280
dann würdest du dann 
logischerweise einfach das 

916
00:49:27,280 --> 00:49:29,440
nehmen da aber dann hast du es 
ja auch nicht implementiert. 

917
00:49:29,800 --> 00:49:32,360
Wenn ich es jetzt aber selbst 
implementiere, dann würde ich 

918
00:49:32,360 --> 00:49:34,480
doch nicht anfangen n 
Riesenkonstrukt als Bilder 

919
00:49:34,480 --> 00:49:38,000
Pattern aufzubauen für einen 
spezifischen Call oder 

920
00:49:38,000 --> 00:49:41,480
beispielsweise das Config 
Management. 

921
00:49:41,480 --> 00:49:44,560
So ne ich hab ich lad ne config,
ja lädst du eine statisch am 

922
00:49:44,560 --> 00:49:47,480
Anfang, dann lad sie halt, dann 
musst du ja nicht dynamisch 

923
00:49:47,480 --> 00:49:49,840
irgendwie ne config 
zusammenbauen, also es ist halt 

924
00:49:49,840 --> 00:49:53,640
auch immer ne Frage des Kontexts
am Ende das ist kann man auf 

925
00:49:53,640 --> 00:49:56,080
jeden Fall so als Take Home 
Message auch noch mal mitnehmen.

926
00:49:57,720 --> 00:50:01,200
Ja, dann fabi, vielen Dank dafür
auch für deine Zusammenfassung. 

927
00:50:01,200 --> 00:50:04,040
Am Ende hat mir mega Spaß 
gemacht, ich find das Pattern 

928
00:50:04,040 --> 00:50:06,720
auch ziemlich cool, es macht 
auch Spaß das mal umzusetzen, 

929
00:50:06,720 --> 00:50:08,680
also weil du hattest es vorhin 
schon gesagt, liebe Zuhörer, 

930
00:50:08,680 --> 00:50:11,600
liebe Zuhörer, probier es ruhig 
mal aus, wenn du noch nie mit 

931
00:50:11,600 --> 00:50:13,520
dem Pattern gearbeitet hast 
beziehungsweise es noch nie 

932
00:50:13,520 --> 00:50:17,600
selbst implementiert hast, weil 
um diese ganzen Fallstricke ja 

933
00:50:17,600 --> 00:50:20,480
und vor und Nachteile wirklich 
verstehen zu können, lohnt es 

934
00:50:20,480 --> 00:50:23,160
sich es auf jeden Fall mal zu 
implementieren und es ist 

935
00:50:23,160 --> 00:50:25,920
sprachenunabhängig ja also du 
kannst eigentlich in jeder 

936
00:50:26,000 --> 00:50:29,960
Sprache. 
Wenn es Objektorientiert ist, 

937
00:50:29,960 --> 00:50:32,880
sagen wir es mal so, das sollte 
es schon sein, abbilden, und das

938
00:50:32,880 --> 00:50:37,440
ist halt wirklich eine coole 
Sache und lohnt sich auf jeden 

939
00:50:37,440 --> 00:50:40,400
Fall, um auch einfach mal das 
Verständnis dafür zu entwickeln.

940
00:50:40,640 --> 00:50:44,080
Ansonsten lieber zuhören, lieber
zuhören, falls du Fragen hast, 

941
00:50:44,240 --> 00:50:47,360
Hau raus, schreib uns, lass uns 
drüber quatschen, wenn du 

942
00:50:47,360 --> 00:50:52,240
Anmerkungen hast, Ergänzung, 
Fragen zum Buffet hast immer 

943
00:50:52,240 --> 00:50:54,440
raus damit, schreib uns die 
Mail, findest du in den 

944
00:50:54,440 --> 00:50:58,400
Shownotes. 
Essenstipps sag uns essenstipps 

945
00:50:58,400 --> 00:51:01,760
genau, sag uns auf jeden Fall, 
ob du das Pattern schon 

946
00:51:01,760 --> 00:51:05,040
verwendet hast, ob du es 
vielleicht indirekt verwendet 

947
00:51:05,040 --> 00:51:08,000
hast und jetzt weiß, dass das 
Pattern dahinter steckt, weil du

948
00:51:08,000 --> 00:51:09,520
zum Beispiel mit Frameworks 
arbeitest. 

949
00:51:10,000 --> 00:51:13,920
So klassische Fälle hat jeder 
mal, dass man sich denkt, AH OK,

950
00:51:14,000 --> 00:51:19,520
deswegen geht das so und. 
Und ansonsten auch noch mal der 

951
00:51:19,520 --> 00:51:21,200
Aufruf. 
Wenn dir der Podcast gefällt, 

952
00:51:21,280 --> 00:51:24,600
lass gerne ne Bewertung da, 
abonniere ihn, empfehle ihn 

953
00:51:24,600 --> 00:51:26,840
gerne weiter, das würde uns 
ungemein freuen und 

954
00:51:26,840 --> 00:51:29,360
weiterhelfen. 
Alle Links zu unseren 

955
00:51:29,360 --> 00:51:33,120
Plattformen in den Shownotes wie
immer Schau auf unserem Discord 

956
00:51:33,120 --> 00:51:35,440
Server vorbei, wir sind 
mittlerweile so ne unglaublich 

957
00:51:35,440 --> 00:51:40,120
coole Truppe da Grüße gehen raus
an alle und ansonsten würde ich 

958
00:51:40,120 --> 00:51:42,080
sagen haben wir uns nächste 
Woche alle wieder ne. 

959
00:51:42,640 --> 00:51:45,680
Und bis dahin habt ne schöne 
Zeit deine Coding Bodys. 

960
00:51:45,800 --> 00:51:46,680
Gemeinsam besser.
