1
00:00:00,080 --> 00:00:02,760
Ich zum Beispiel jetzt einfach 
immer meinen Kaffee schwarz 

2
00:00:02,760 --> 00:00:04,400
trinke. 
Du bist ja so ein Milchtrinker, 

3
00:00:05,360 --> 00:00:07,040
aber ich sehr. 
Irgendwie ne Beleidigung mach. 

4
00:00:09,200 --> 00:00:11,600
Das weiß ich so nicht. 
Nein, nein, nein, obwohl ich 

5
00:00:11,600 --> 00:00:14,880
trotzdem. 
Milch trinke selber Milch, 

6
00:00:14,880 --> 00:00:18,200
trinke Coding Buddies, Dein 
Podcast rund um 

7
00:00:18,280 --> 00:00:20,240
Softwareentwicklung und 
aktueller Tech News. 

8
00:00:20,800 --> 00:00:35,200
Herzlich Willkommen. 
Halli Hallo und herzlich 

9
00:00:35,200 --> 00:00:37,640
Willkommen zur neuen Folge des 
Cody Buddies Podcasts. 

10
00:00:37,640 --> 00:00:39,920
Schön, dass du wieder 
eingeschaltet hast, deine 

11
00:00:39,920 --> 00:00:43,520
Gastgeber und wie soll es anders
sein, meine Wenigkeit, der Tino 

12
00:00:43,520 --> 00:00:46,760
und der fantastische Fabi, der 
mir hier schon wieder virtuell 

13
00:00:46,760 --> 00:00:49,120
gegenüber sitzt. 
Fabi, ich begrüße Dich zur neuen

14
00:00:49,120 --> 00:00:50,400
Folge. 
Was geht ab? 

15
00:00:50,720 --> 00:00:52,880
Tino, Tino, Wie geht's, wie 
steht's? 

16
00:00:53,840 --> 00:00:59,440
Danke für alles, super für die 
nette Anmoderation mal wieder du

17
00:00:59,440 --> 00:01:02,840
schmeichelst. 
Ja, also man braucht jetzt so 

18
00:01:02,840 --> 00:01:04,840
ein paar Konstanten. 
Weißt du so, wenn schon immer 

19
00:01:04,840 --> 00:01:07,480
ein anderes Thema in der Podcast
Folge, dann sollte ich zumindest

20
00:01:07,480 --> 00:01:10,000
die Anmoderation gleich machen. 
So ein Wiedererkennungswert 

21
00:01:10,000 --> 00:01:13,920
weißt du, man muss dazu sagen. 
Du machst es ja aber so, dass 

22
00:01:13,920 --> 00:01:16,800
also du machst es ja auch immer 
ne, es ist ja nicht so, als 

23
00:01:16,800 --> 00:01:19,760
würde man das irgendwie so. 
Weißt du so vom irgendwie von 

24
00:01:19,760 --> 00:01:23,120
der Platte einspielen, das ist 
ja immer wieder live neu 

25
00:01:23,120 --> 00:01:27,480
performt. 
Nein, also treue Zuhörerinnen 

26
00:01:27,480 --> 00:01:29,760
und Zuhörer merken, dass ich es 
immer ein bisschen anders 

27
00:01:29,760 --> 00:01:32,000
betone. 
Also es gibt da schon 

28
00:01:32,000 --> 00:01:38,160
Variationen, aber geht's dir 
gut, Tino Jo alles ist alles fit

29
00:01:38,160 --> 00:01:43,000
bei mir, soweit der Stress nimmt
so langsam ein bisschen ab sag 

30
00:01:43,040 --> 00:01:47,840
ich mal so die Sommerzeit, diese
stressige hat man ja so gesagt, 

31
00:01:47,840 --> 00:01:50,080
also Stress in Anführungszeichen
ist natürlich schön, immer was 

32
00:01:50,080 --> 00:01:52,360
los, ist aber auch schön wenn 
immer wieder so ein bisschen 

33
00:01:52,360 --> 00:01:55,760
mehr Ruhe einkehrt und wie 
sieht's bei dir aus, Jo Jo? 

34
00:01:55,840 --> 00:01:59,480
Ich will mich nicht beklagen. 
Das ist gut. 

35
00:01:59,480 --> 00:02:01,040
Klar, das. 
Ist gut, das ist n gutes 

36
00:02:01,040 --> 00:02:04,320
Zeichen. 
Aber bevor wir heute richtig 

37
00:02:04,320 --> 00:02:06,640
loslegen, weil wir haben heute n
cooles Thema, denn das ist n 

38
00:02:06,640 --> 00:02:09,360
Community Thema was ich 
gewünscht wurde wo wir heute 

39
00:02:09,360 --> 00:02:14,320
drauf eingehen wollen, möchte 
ich vorher mich aber noch beim 

40
00:02:14,560 --> 00:02:18,080
Oliver bedanken für die Podcast 
Spende Oliver Herzlichen Dank 

41
00:02:18,080 --> 00:02:20,720
Wir haben uns mega gefreut 
vielen vielen vielen Dank dafür 

42
00:02:20,720 --> 00:02:23,280
aber das das er hat uns sehr 
vielen Dank. 

43
00:02:23,280 --> 00:02:26,960
Und er hat uns auch mit so 
tollen Attributen. 

44
00:02:27,200 --> 00:02:29,520
Belegt, wie cool und immer 
bestens gelaunt. 

45
00:02:29,520 --> 00:02:34,320
Also das ist schön, das freut 
uns natürlich vielen, vielen 

46
00:02:34,320 --> 00:02:40,160
Dank auch dafür, das ja hat auf 
jeden Fall ein Schmunzeln, ein 

47
00:02:40,160 --> 00:02:41,760
Lächeln in unser Gesicht 
gezaubert. 

48
00:02:41,760 --> 00:02:43,280
Direkt wieder gute Laune, ne 
Fabi. 

49
00:02:44,360 --> 00:02:46,880
Auf jeden Fall. 
Ja, ansonsten liebe zuhören, 

50
00:02:46,880 --> 00:02:48,440
Liebe zuhören. 
Falls du auch dir denkst, 

51
00:02:48,440 --> 00:02:50,240
Mensch, cooler Podcast. 
Die Jungs möchte ich 

52
00:02:50,240 --> 00:02:51,920
unterstützen in ihrem Vorhaben, 
aber. 

53
00:02:52,000 --> 00:02:54,360
Das freut uns dann sehr, wenn 
das dein Vorhaben ist. 

54
00:02:54,360 --> 00:02:56,800
Den Link dazu findest du, wie 
man den Shownotes dann schon mal

55
00:02:56,800 --> 00:02:59,840
vielen Dank für den Support. 
Ja, vielen Dank und auch vielen 

56
00:02:59,840 --> 00:03:02,560
Dank an den ganzen Support, den 
wir bisher schon bekommen haben 

57
00:03:02,560 --> 00:03:05,840
und dann möcht ich auch noch mal
quasi so allgemein da draußen 

58
00:03:05,840 --> 00:03:06,880
bei. 
Sein, der hab ich. 

59
00:03:07,280 --> 00:03:10,000
Richtig toll. 
Vielen vielen dank Tino das 

60
00:03:10,000 --> 00:03:11,520
Thema. 
Du hast ja gesagt wo du sich 

61
00:03:11,520 --> 00:03:17,360
gewünscht, es geht um Dependency
Injection heute ja. 

62
00:03:18,240 --> 00:03:21,320
Quasi ein ein, ich sag mal, ein 
Thema, wo man in der 

63
00:03:21,320 --> 00:03:22,880
Softwareentwicklung gar nicht 
drumherum kommt. 

64
00:03:22,880 --> 00:03:25,760
Ja, wir hatten es. 
Ja, so n bisschen angerissen bei

65
00:03:25,760 --> 00:03:30,440
unserer Design Pattern Folge zum
Thema Singleton, weil wir gesagt

66
00:03:30,440 --> 00:03:34,440
haben OK, Singleton hat ja 
einfach definitiv Nachteile die 

67
00:03:34,440 --> 00:03:40,320
es mit sich bringt und dass da 
oftmals dependency Injection der

68
00:03:40,320 --> 00:03:42,480
bessere Weg ist, den man da 
gehen kann. 

69
00:03:42,720 --> 00:03:44,640
Ja. 
Und hatten ihr Angebot. 

70
00:03:44,640 --> 00:03:47,280
Nee, wenn ihr Bock habt zu dem 
Thema machen wir ne Folge. 

71
00:03:47,600 --> 00:03:50,080
Und genau das kam auch. 
Also vielen Dank für die 

72
00:03:50,080 --> 00:03:52,120
Nachrichten und hier ist die 
Folge. 

73
00:03:53,600 --> 00:03:58,800
Genau sie ist sie lebt. 
Und Dependency injection ich, 

74
00:03:59,440 --> 00:04:01,680
ich glaube, manche würden 
wahrscheinlich sagen, das ist 

75
00:04:01,680 --> 00:04:07,400
ein Thema für für Anfänger, 
sozusagen ich, ich weiß es gar, 

76
00:04:07,400 --> 00:04:10,640
ich kann es gar nicht richtig 
sagen, weil ich glaube, ich bin 

77
00:04:10,880 --> 00:04:15,520
damit nicht sofort. 
Beim Start in der 

78
00:04:15,520 --> 00:04:18,240
Softwareentwicklung mit 
konfrontiert gewesen, aber ich 

79
00:04:18,240 --> 00:04:19,519
weiß nicht wie das heutzutage 
ist. 

80
00:04:20,320 --> 00:04:23,760
Wie gesagt, war ja bei uns auch 
ein bisschen Holprigatino, von 

81
00:04:23,920 --> 00:04:26,680
daher kann es ja vielleicht 
sein, dass andere da generell 

82
00:04:26,680 --> 00:04:29,520
ein bisschen schneller sind, 
auch so vom vom von der 

83
00:04:29,520 --> 00:04:32,560
Lernkurve her. 
Aber die Penancy Injection an 

84
00:04:32,560 --> 00:04:35,280
sich ist ja auch eine Art 
Entwurfsmuster, könnte man es 

85
00:04:35,280 --> 00:04:37,360
nennen. 
Es ist aber unabhängig jetzt von

86
00:04:37,360 --> 00:04:39,960
unserer Design Pattern Reihe was
wir die wir gemacht haben, weil 

87
00:04:39,960 --> 00:04:42,920
es sozusagen nicht unter diese 
Design Pattern nicht in diese 

88
00:04:42,920 --> 00:04:48,800
Sparte, sage ich jetzt mal mit 
reinfällt genau und es geht im 

89
00:04:48,800 --> 00:04:52,960
Endeffekt darum, dass wenn du 
wir sind, aber trotzdem in der 

90
00:04:52,960 --> 00:04:55,840
Objektorientierung unterwegs, 
das heißt wenn du Objekte hast, 

91
00:04:57,040 --> 00:05:00,200
dann. 
Haben mehr Objekte oder Klassen,

92
00:05:00,200 --> 00:05:01,640
sag ich jetzt mal. 
Haben ja meistens irgendwie 

93
00:05:01,640 --> 00:05:05,600
Abhängigkeiten zu anderen Teilen
aus der Software, die du 

94
00:05:05,600 --> 00:05:08,960
schreibst. 
Und diese Abhängigkeiten kann 

95
00:05:08,960 --> 00:05:12,960
man auf verschiedene Art und 
weisen eben irgendwie im Objekt,

96
00:05:13,200 --> 00:05:16,720
ich sag mal verankern oder 
mitgeben und bei Dependency 

97
00:05:16,720 --> 00:05:18,960
Injection ist es ja, wie der 
Name schon sagt, dass diese 

98
00:05:18,960 --> 00:05:22,320
Abhängigkeit, also diese 
dependency halt eben injiziert 

99
00:05:22,320 --> 00:05:24,960
wird, ne also injected wird. 
Ja. 

100
00:05:25,600 --> 00:05:27,400
Da hast du ja schon 2 gute 
Wörter gesagt. 

101
00:05:27,400 --> 00:05:30,000
Einmal dieses mitgeben oder 
verankern, das trifft es ja 

102
00:05:30,000 --> 00:05:32,480
schon ganz gut, weil diese 
beiden Möglichkeiten habe ich ja

103
00:05:32,880 --> 00:05:36,240
im Prinzip, wie ich 
Abhängigkeiten definieren kann. 

104
00:05:36,560 --> 00:05:39,440
In meiner Klasse entweder ich 
veranker es wie du es so schön 

105
00:05:39,440 --> 00:05:44,360
meintest, dass es halt hart da 
drin gekapselt ist, sozusagen ne

106
00:05:44,360 --> 00:05:47,560
und n fester Bestandteil ist 
innerhalb meiner Klasse oder 

107
00:05:47,560 --> 00:05:50,480
mitgeben ist das schöne Wort, 
wenn ich sage ey du brauchst das

108
00:05:50,480 --> 00:05:54,640
und das zukünftig für deine 
Aufgaben hier, nimm mal so weißt

109
00:05:54,640 --> 00:05:58,400
du ich geb dir das jetzt mal mit
arbeite damit, mach das Beste 

110
00:05:58,400 --> 00:06:00,560
draus. 
Ich stell mir das immer so. 

111
00:06:00,560 --> 00:06:05,120
Weißt du, wenn du so. 
Das Real Life ne so hast ohne 

112
00:06:05,120 --> 00:06:08,160
Dependency Injection, dann ist 
das ungefähr so. 

113
00:06:08,160 --> 00:06:10,320
Du kannst dir das ungefähr 
vorstellen, so angenommen guck 

114
00:06:10,320 --> 00:06:12,960
mal das das machen wir beide, 
wir stehen morgens aufgehen zur 

115
00:06:12,960 --> 00:06:16,560
Kaffeemaschine und ziehen uns n 
Kaffee so ich hab damit weniger 

116
00:06:16,560 --> 00:06:19,320
n Problem weil ich zum Beispiel 
jetzt einfach immer meinen 

117
00:06:19,320 --> 00:06:22,920
Kaffee schwarz trinke, du bist 
ja so milchtrinker aber ich hab 

118
00:06:22,920 --> 00:06:24,040
sehr. 
Irgendwie ne Beleidigung 

119
00:06:24,040 --> 00:06:27,480
gemacht. 
Das weiß ich so nicht. 

120
00:06:27,760 --> 00:06:30,240
Nein, nein, nein, obwohl ich 
trotzdem Milch trinke. 

121
00:06:31,520 --> 00:06:36,080
Selber milch. 
Trinker mit Milch, Trinker ja 

122
00:06:36,080 --> 00:06:40,120
ne, also alles gut, keine 
Beleidigung, nur n kleiner 

123
00:06:40,120 --> 00:06:43,920
Angriff, dass man Kaffee nicht 
mehr Milch trinkt Spaß, aber 

124
00:06:43,920 --> 00:06:45,560
stell dir vor du hast so ne 
Kaffeemaschine und willst dir so

125
00:06:45,560 --> 00:06:47,920
nen schönen Cappuccino machen ne
und du sagst ja OK ich will den 

126
00:06:47,920 --> 00:06:53,360
jetzt mit Kuhmilch und dann. 
Sagst du aber morgen, also am 

127
00:06:53,360 --> 00:06:55,360
nächsten Tag sagst du ey ich 
will den aber jetzt mit 

128
00:06:55,360 --> 00:06:58,400
hafermilch ne und wenn du jetzt 
keine Dependency Injection 

129
00:06:58,400 --> 00:07:01,400
hättest bei deiner 
Kaffeemaschine ne, dann wäre es 

130
00:07:01,400 --> 00:07:03,400
so, dass du theoretisch 2 
Kaffeemaschinen bräuchtest, 

131
00:07:03,400 --> 00:07:06,800
nämlich einmal ne Kaffeemaschine
mit Milch, ne, also mit Kuhmilch

132
00:07:06,800 --> 00:07:11,200
und eine mit Hafermilch so und 
im im im absoluten Worst Case 

133
00:07:11,200 --> 00:07:13,240
müsstest du dir, wenn die Milch 
alles ne neue Kaffeemaschine 

134
00:07:13,240 --> 00:07:18,280
kaufen oder weil sie dich du 
kennst ja wahrscheinlich auch 

135
00:07:18,280 --> 00:07:20,720
noch die guten alten CD Player 
von damals. 

136
00:07:21,600 --> 00:07:26,200
Ja, also absolut war ne geile 
Zeit mit Anti Schock, die man 

137
00:07:26,200 --> 00:07:27,680
sogar in ne Hosentasche stecken 
konnte. 

138
00:07:28,080 --> 00:07:29,920
Na ja gut, die waren krass, die 
waren krass. 

139
00:07:29,920 --> 00:07:34,400
War richtig krass, aber auch da 
wäre es da da als also so diese 

140
00:07:34,400 --> 00:07:37,480
Analogie oder der Vergleich, 
dass du halt für jede CD, ja die

141
00:07:37,480 --> 00:07:40,480
du irgendwie hören willst, 
wieder einen eigenen CD Player 

142
00:07:40,480 --> 00:07:43,240
bräuchtest, weil du halt einfach
die CD wird da reingebaut, die 

143
00:07:43,240 --> 00:07:48,000
kannst du nicht wechseln, ne ja 
das ist sozusagen das wäre die 

144
00:07:48,000 --> 00:07:50,240
Situation. 
Und jetzt kannst du dich 

145
00:07:50,240 --> 00:07:52,800
natürlich hinstellen und sagen, 
ja, Fabi, das sind aber ganz 

146
00:07:52,800 --> 00:07:56,280
schön realitätsferne Beispiele 
und ich würd sagen, Sie sind 

147
00:07:56,280 --> 00:07:58,720
auch aus gutem Grund sehr 
realitätsfern. 

148
00:07:59,920 --> 00:08:02,720
Weil man es so einfach nicht 
machen würde. 

149
00:08:02,880 --> 00:08:07,840
Ja, ist richtig, man kann sich 
das auch so vorstellen. 

150
00:08:09,120 --> 00:08:12,200
Das ist gar nicht so 
realitätsfern, wenn du dir 

151
00:08:12,200 --> 00:08:15,360
einfach mal aktuelle Smartphones
anguckst und du zum Beispiel 

152
00:08:15,360 --> 00:08:18,480
sagst, ist der Akku fest verbaut
oder kann ich n Akku 

153
00:08:18,480 --> 00:08:20,840
austauschen? 
Wäre ja auch mal so ein so ein 

154
00:08:20,840 --> 00:08:25,200
Gedankenspiel, weil dependency 
Injection nach dem Prinzip 

155
00:08:25,200 --> 00:08:28,880
müsste ich ja sagen okay ich 
habe ein Handy und ich gebe ein 

156
00:08:28,880 --> 00:08:32,240
Akku dazu und den verwende ich 
für dieses Handy, damit es 

157
00:08:32,240 --> 00:08:34,640
läuft, wenn er fest verbaut ist.
Dann habe ich nämlich genau 

158
00:08:34,640 --> 00:08:36,400
dieses verankert, was du 
meintest. 

159
00:08:36,559 --> 00:08:42,080
Das heißt der Akku ist fester 
Bestandteil des Handys und ich 

160
00:08:42,080 --> 00:08:45,200
kann ihn halt nicht wechseln, 
sondern der da drin ist. 

161
00:08:45,200 --> 00:08:47,600
Ist der Akku des Handys und wenn
der kaputt geht habe ich ein 

162
00:08:47,600 --> 00:08:50,000
Problem. 
Also jetzt für den Line ne. 

163
00:08:50,000 --> 00:08:52,120
Natürlich kann ich das Handy 
aufmachen und den Akku tauschen,

164
00:08:52,120 --> 00:08:55,440
aber es ist nicht mehr wie 
früher unsere gute alte Nokia 

165
00:08:55,440 --> 00:08:58,480
3310 Zeit wo du hinten mal die 
Schale abgemacht hast die 

166
00:08:58,480 --> 00:09:01,680
sowieso ständig abgefallen ist 
und du den Akku einfach 

167
00:09:01,680 --> 00:09:04,800
rausnehmen konntest. 
Ne das wär so auch der 

168
00:09:04,800 --> 00:09:07,200
Unterschied und ich find halt 
diese Analogien und Beispiele 

169
00:09:07,200 --> 00:09:10,280
immer sehr gut, deswegen 
gefallen mir deine auch sehr gut

170
00:09:10,280 --> 00:09:13,200
mit dem CD Player, zum Beispiel 
weil man daran einfach erkennt, 

171
00:09:13,200 --> 00:09:15,120
dass du ja Konzepte auch 
versuchst. 

172
00:09:15,280 --> 00:09:18,480
Zu übernehmen sozusagen auch in 
der Softwareentwicklung, ja. 

173
00:09:18,600 --> 00:09:20,000
Vor allen Dingen auch so was das
Konzept. 

174
00:09:20,000 --> 00:09:23,680
Bewährt hat so ja. 
Genau, ja, auf jeden Fall. 

175
00:09:24,160 --> 00:09:27,800
Aber also deswegen ist halt ne 
das was du meintest. 

176
00:09:27,800 --> 00:09:30,160
Du kannst es halt von außen 
reingeben, ne bei einem CD 

177
00:09:30,160 --> 00:09:33,200
Player wie man ihn kennt nimmst 
du halt ne CD, Pack sie rein wie

178
00:09:33,200 --> 00:09:35,360
zum Beispiel auch den Akku den 
man dann vielleicht wechseln 

179
00:09:35,360 --> 00:09:36,760
kann. 
Du kannst die CD wechseln, du 

180
00:09:36,760 --> 00:09:39,400
kannst vielleicht einfach bei 
einer normalen Kaffeemaschine 

181
00:09:39,400 --> 00:09:41,840
sag ich jetzt mal die halt eben 
auch Cappuccino Fisch ist ist 

182
00:09:41,840 --> 00:09:46,840
meine übrigens nicht. 
Die mag ich nicht, aber komisch 

183
00:09:46,840 --> 00:09:53,760
so als Milchtrinker. 
Ja, schon n bisschen, der aber 

184
00:09:53,760 --> 00:09:56,440
auf jeden Fall. 
Kannst du da theoretisch. 

185
00:09:56,440 --> 00:09:58,840
Eigentlich brauchst du ja nur 
irgendwie, sag ich jetzt mal ne 

186
00:09:58,840 --> 00:10:01,720
Art so Schlauch, wo du dann halt
dir die Milch anzapfen kannst. 

187
00:10:01,720 --> 00:10:04,560
Wo du also egal ist, welche Art 
von Milch dann am Ende 

188
00:10:04,560 --> 00:10:08,080
reinkommt, ne und das ist halt 
im Endeffekt so das Prinzip von 

189
00:10:08,080 --> 00:10:10,280
Dependency Injection, dass man 
einfach sagen kann, OK, du hast 

190
00:10:10,280 --> 00:10:14,320
halt eben dein Objekt ne und 
kannst eben diese Abhängigkeiten

191
00:10:14,480 --> 00:10:18,080
zu etwas anderem was du brauchst
für dein Objekt, was da drin 

192
00:10:18,080 --> 00:10:23,040
verwendet wird eben von außen 
reingeben und das ist halt. 

193
00:10:24,720 --> 00:10:26,600
Also die Penancy Injection an 
sich. 

194
00:10:26,600 --> 00:10:29,280
Ich fand das ganz interessant, 
weil mich hat das am Anfang 

195
00:10:29,280 --> 00:10:31,840
total verwirrt irgendwann als 
ich damit mal in so ne Berührung

196
00:10:31,840 --> 00:10:35,200
gekommen bin, hatte mal n Alter 
ist wirklich schon länger her, 

197
00:10:35,200 --> 00:10:38,640
Kollege irgendwann mal gesagt ja
hier inversion of control ne und

198
00:10:38,640 --> 00:10:41,280
ich dachte mir so oh Gott ey was
ist das jetzt schon wieder ne 

199
00:10:41,520 --> 00:10:42,320
klingt. 
Krass. 

200
00:10:42,480 --> 00:10:46,000
Das ist richtig krass, aber 
Inversion of Control ist ja 

201
00:10:46,000 --> 00:10:49,840
eigentlich auch nur wie sagt 
man, also ist das ist das 

202
00:10:49,840 --> 00:10:53,160
Prinzip und die Penancy 
Injection ist eine Verwendung 

203
00:10:53,160 --> 00:10:54,480
des Prinzips, kann man das so 
sagen? 

204
00:10:55,040 --> 00:10:58,800
Umsetzung. 
Ja, und im Endeffekt ist es ja 

205
00:10:58,800 --> 00:11:02,960
nichts anderes, ne. 
Ja, was dabei ganz witzig ist, 

206
00:11:02,960 --> 00:11:06,320
weil es ja auch es vielleicht 
auch dem einen oder anderen Mal 

207
00:11:06,320 --> 00:11:08,960
begegnet, dass es so n bisschen 
das Hollywood Prinzip ist. 

208
00:11:10,160 --> 00:11:14,240
Nach dem Leitsatz Don't Call US,
We will Call you. 

209
00:11:14,960 --> 00:11:18,480
Das find ich auch sehr witzig. 
Weil das genau das 

210
00:11:18,480 --> 00:11:19,760
widerspiegelt. 
So ne. 

211
00:11:19,760 --> 00:11:22,320
Also du musst jetzt nicht da 
anrufen, sondern die melden sich

212
00:11:22,320 --> 00:11:24,400
bei dir. 
Die Infos werden schon zu dir 

213
00:11:24,400 --> 00:11:27,840
kommen, dann wenn es soweit ist 
sollte es soweit sein. 

214
00:11:30,960 --> 00:11:34,720
Genau also Inversion of Control 
die Kontrolle umkehren ja genau,

215
00:11:35,200 --> 00:11:38,080
ich find das klingt immer super 
crazy, weil ich mich genau immer

216
00:11:38,080 --> 00:11:41,680
gefragt hab, also dieses. 
Ich find, das ist so abstrakt. 

217
00:11:41,680 --> 00:11:44,880
Weißt du, du sagst OK, du kehrst
die Kontrolle um und ich hab 

218
00:11:44,880 --> 00:11:47,800
mich immer ganz am Anfang hab 
ich mich immer so gefragt, was 

219
00:11:47,800 --> 00:11:50,840
soll denn das heißen, die 
Kontrolle umkehren, das klingt 

220
00:11:50,840 --> 00:11:52,840
irgendwie so weißt du, du bist 
dann so irgendwie in nem 

221
00:11:52,840 --> 00:11:55,280
Programmflussdenken und denkst 
dann so fließt das jetzt in die 

222
00:11:55,280 --> 00:11:58,720
andere Richtung zurück oder was 
also was heißt Kontrolle 

223
00:11:58,720 --> 00:12:01,520
umkehren weißt du also ich ich 
weiß nicht ob ob das für dich 

224
00:12:01,520 --> 00:12:04,560
auch mal so n Verständnisproblem
war einfach nur von diesem. 

225
00:12:05,920 --> 00:12:08,840
Von von diesem Naming her weißt 
du, weil es heißt ja einfach, 

226
00:12:08,880 --> 00:12:10,680
Kontrolle. 
Hattest du da mal n Problem mit 

227
00:12:10,680 --> 00:12:11,920
ich? 
Also ich fand es immer sehr sehr

228
00:12:11,920 --> 00:12:18,840
komisch das zu greifen. 
Na, ich hatte am Anfang oft das 

229
00:12:18,840 --> 00:12:21,520
Problem damit, dass ich mich mal
gefragt hab, warum das Ganze, 

230
00:12:21,760 --> 00:12:25,360
also warum Kontrolle umkehren, 
weil irgendwie macht es doch 

231
00:12:25,360 --> 00:12:27,240
Sinn das Ganze zu Kapseln. 
So ne. 

232
00:12:27,240 --> 00:12:30,400
Also ich hab jetzt n Objekt und 
das braucht n anderes Objekt um 

233
00:12:30,400 --> 00:12:32,800
davon Funktionen aufzurufen 
beispielsweise ja. 

234
00:12:33,200 --> 00:12:34,720
Dann war es für mich früher 
immer so. 

235
00:12:34,720 --> 00:12:36,760
Ja, warum soll ich das jetzt 
irgendwie von draußen reingeben?

236
00:12:36,760 --> 00:12:39,480
Ich brauch das ja nur in diesem 
Objekt, da sozusagen ne, also 

237
00:12:39,480 --> 00:12:42,560
das hat jetzt ne Instanz davon 
und ich möchte mit der Instanz 

238
00:12:42,560 --> 00:12:46,080
von dem Objekt B nenn ich es mal
auch wirklich nur in Objekt 

239
00:12:46,080 --> 00:12:48,000
arbeiten damit also es soll 
jetzt nicht noch ne andere 

240
00:12:48,000 --> 00:12:51,440
kriegen und hab halt immer nicht
den Vorteil da dran gesehen 

241
00:12:51,600 --> 00:12:54,160
warum ich das jetzt von außen 
reingeben sollte wenn ich es 

242
00:12:54,160 --> 00:12:56,560
doch so schön kapseln kann, 
darum muss ich mir von außen gar

243
00:12:56,560 --> 00:12:59,120
keine Gedanken machen, der hat 
dann einfach sein Objekt b da 

244
00:12:59,120 --> 00:13:02,160
drin. 
Und das geht halt auch so in die

245
00:13:02,160 --> 00:13:05,360
Richtung was du meintest mit 
diesem sich das vorstellen zu 

246
00:13:05,360 --> 00:13:07,840
können. 
Was ist jetzt das Inverse dabei 

247
00:13:08,560 --> 00:13:13,240
und was bringt mir das Ganze? 
Ja, also im Endeffekt ist es ja,

248
00:13:13,240 --> 00:13:15,920
also ich, ich konnte es mir 
irgendwann so vorstellen, 

249
00:13:15,920 --> 00:13:20,040
zumindest, dass ich mir gesagt 
hab, OK, es ist nicht so, dass 

250
00:13:20,040 --> 00:13:24,120
das Objekt jetzt sich sozusagen 
das holt, was es braucht, ne 

251
00:13:24,160 --> 00:13:27,960
also beziehungsweise. 
Das Objekt in sich selber wie du

252
00:13:27,960 --> 00:13:31,520
meintest hast du hast nur dort 
diese Abhängigkeit innerhalb des

253
00:13:31,520 --> 00:13:34,040
Objektes, das heißt, das Objekt 
kann sich das einfach holen was 

254
00:13:34,040 --> 00:13:36,800
es braucht, weil es das schon 
hat, weil es darauf Zugriff hat,

255
00:13:37,680 --> 00:13:41,360
sondern es bekommt es sozusagen 
geliefert, also das was es 

256
00:13:41,360 --> 00:13:44,320
braucht bekommt es halt eben 
geliefert und das ist halt 

257
00:13:44,320 --> 00:13:48,160
sozusagen diese, diese diese das
umkehren der Kontrolle. 

258
00:13:48,480 --> 00:13:51,520
Weil das Objekt nicht mehr 
selber die Kontrolle hat und 

259
00:13:51,520 --> 00:13:54,600
sagen kann, OK, ich weiß, was 
ich also was ich habe, also zum 

260
00:13:54,600 --> 00:13:57,880
Beispiel der CD Player, sagt Ey,
das ist meine CD, nur ich krieg 

261
00:13:58,000 --> 00:13:59,880
die sondern. 
Es hat halt eben nicht mehr 

262
00:13:59,880 --> 00:14:03,200
diese Kontrolle, sondern muss 
darauf warten, dass eben etwas 

263
00:14:03,200 --> 00:14:06,000
anderes, nämlich der Mensch, 
dann am Ende die entsprechende 

264
00:14:06,000 --> 00:14:09,840
CD einlegt, um zu sagen, OK, 
jetzt kriegst du diese CD. 

265
00:14:09,840 --> 00:14:13,920
Ne, das heißt diese diese 
Abhängigkeit wird von außen von 

266
00:14:13,920 --> 00:14:17,120
was anderem kontrolliert und 
nicht von dem Objekt selber und 

267
00:14:17,120 --> 00:14:20,960
das war für mich dann irgendwann
so der OK, das meinen die mit 

268
00:14:20,960 --> 00:14:22,960
Kontrolle umdrehen, weil 
irgendwie dachte ich immer so, 

269
00:14:22,960 --> 00:14:25,160
weil am Ende weißt du ich, ich 
hab manchmal glaub ich so n 

270
00:14:25,160 --> 00:14:28,840
richtig verquerten. 
Sachverstand, der sich irgendwie

271
00:14:28,840 --> 00:14:31,880
Sachen komisch vorstellt. 
Und ich dachte halt immer so hä,

272
00:14:31,880 --> 00:14:34,800
das Objekt macht doch trotzdem 
noch die Sachen, weißt du also 

273
00:14:34,800 --> 00:14:37,280
das Objekt hat doch trotzdem 
noch die Kontrolle, weil es ja 

274
00:14:37,280 --> 00:14:40,800
trotzdem irgendwie am Ende die 
entsprechenden Funktionen und so

275
00:14:40,800 --> 00:14:42,960
aufrufen. 
Ja, und genau das war halt auch 

276
00:14:43,120 --> 00:14:47,120
das Thema am Anfang bei mir, wo 
ich mir dann dachte, warum baue 

277
00:14:47,120 --> 00:14:50,760
ich das ganze ne, aber im 
Prinzip ich lös die 

278
00:14:50,760 --> 00:14:54,320
Abhängigkeiten auf, ja. 
Hab aber jetzt die Verantwortung

279
00:14:54,320 --> 00:14:55,600
von draußen und das war immer 
so. 

280
00:14:55,600 --> 00:14:58,480
Auch mein Klemmer ne so, ja du 
kriegst das jetzt übergeben. 

281
00:14:58,480 --> 00:15:00,960
OK das Objekt selbst macht sich 
jetzt keine Gedanken mehr wie 

282
00:15:00,960 --> 00:15:03,800
das Objekt aussieht, was von 
draußen reinkommt, es verwendet 

283
00:15:03,800 --> 00:15:05,640
das einfach nur, also hab ich 
diese Abhängigkeit irgendwo 

284
00:15:05,640 --> 00:15:07,760
aufgelöst. 
Hab ja aber das Problem, dass 

285
00:15:07,760 --> 00:15:10,480
ich jetzt draußen darüber 
entscheiden muss und da dachte 

286
00:15:10,480 --> 00:15:12,680
ich mir anfangs dann halt immer 
so ja, aber warum macht es denn 

287
00:15:12,680 --> 00:15:15,080
nicht Sinn das zu Kapseln? 
Und dann hab ich so ne 

288
00:15:15,080 --> 00:15:18,560
geschlossene Einheit weißt du wo
alles safe ist so. 

289
00:15:20,560 --> 00:15:23,040
Ich kann diesen Gedankengang 
auch heute noch nachvollziehen, 

290
00:15:23,040 --> 00:15:25,360
allerdings gibt es viele 
Faktoren, die genau dann für 

291
00:15:25,360 --> 00:15:28,960
Dependency Injection sprechen 
und ich finde was also wenn man 

292
00:15:28,960 --> 00:15:32,720
sich überlegen möchte, was das 
Ganze bringt, können wir ja mal 

293
00:15:32,720 --> 00:15:34,720
n kleines Beispiel machen um das
relativ schnell zu 

294
00:15:34,720 --> 00:15:37,920
verdeutlichen, weil ich glaube 
wir hatten in der Singleton 

295
00:15:37,920 --> 00:15:42,640
Folge gerade in Bezug auf 
Testbarkeit drüber gesprochen, 

296
00:15:42,640 --> 00:15:44,960
warum da dependency Injection 
gut wäre. 

297
00:15:45,200 --> 00:15:48,320
Das wär jetzt so ein Punkt, der 
ganz klar dafür spricht, halt 

298
00:15:48,320 --> 00:15:51,600
ja. 
Aber lass uns mal ein Beispiel 

299
00:15:51,600 --> 00:15:56,880
machen. 
Wir haben ja ganz oft 

300
00:15:56,880 --> 00:16:02,080
essensbeispiele bei uns gehen 
wir mal so ein bisschen in die 

301
00:16:02,080 --> 00:16:05,320
Richtung, aber da damit es nicht
langweilig wird, nicht direkt 

302
00:16:05,320 --> 00:16:08,400
auf die Essensherstellung wie 
sonst, sondern lass uns mal über

303
00:16:08,400 --> 00:16:12,480
so eine Art Lieferservice 
sprechen und stell dir vor, du 

304
00:16:12,480 --> 00:16:18,160
hast so einen Orderservice, 
worüber du bestellen kannst und 

305
00:16:18,960 --> 00:16:23,040
jetzt möchtest du darüber 
bestellen und was beinhaltet so 

306
00:16:23,040 --> 00:16:25,640
ne Bestellung? 
Du hast einerseits n Payment ja,

307
00:16:25,640 --> 00:16:28,560
also dass du sagst ich möchte 
das halt auch gleich bezahlen 

308
00:16:28,560 --> 00:16:31,520
wenn ich bestelle also der Kunde
möchte das gleich bezahlen und 

309
00:16:31,520 --> 00:16:34,400
ich als Anbieter möchte 
gewährleisten, dass er das auch 

310
00:16:34,400 --> 00:16:38,880
bezahlen kann und hab natürlich 
auch sag ich mal ne Art 

311
00:16:38,880 --> 00:16:41,280
Shipping. 
Ja also beispielsweise. 

312
00:16:42,720 --> 00:16:46,000
Er muss angeben, wo er wohnt. 
Wohin muss das geliefert werden 

313
00:16:46,000 --> 00:16:49,920
und so weiter wenn es jetzt so 
um Essensbestellung geht, ja und

314
00:16:50,000 --> 00:16:55,200
angenommen ja gut, finanziere 
das angenommen ich implementiere

315
00:16:55,200 --> 00:16:59,280
das jetzt ohne Dependency 
Injection, das heißt ich hab 

316
00:16:59,280 --> 00:17:03,120
jetzt n Order Service und wenn 
ich den Anlege. 

317
00:17:05,040 --> 00:17:08,400
Instanziiert er für sich selbst 
einen Shipping Service und 

318
00:17:08,400 --> 00:17:11,359
Payment Service und den braucht 
er ja, er braucht diese beiden 

319
00:17:11,359 --> 00:17:16,520
Services um seine Aufgabe 
vollenden zu können und da sieht

320
00:17:16,520 --> 00:17:18,760
man jetzt vielleicht schon oder 
kann man sich schon denken, so 

321
00:17:18,760 --> 00:17:24,560
okay jetzt entscheidet der Order
Service selbst da drüber wie 

322
00:17:24,560 --> 00:17:28,000
bezahlt wird und wie 
ausgeliefert wird, das muss er 

323
00:17:28,000 --> 00:17:32,000
ja jetzt für sich ohne Wissen 
von außen festlegen. 

324
00:17:32,800 --> 00:17:36,080
Ja, wenn ich keine Dependency 
Injection hab, so dann sagt er 

325
00:17:36,080 --> 00:17:42,760
zum Beispiel weiß nicht bezahlen
Paypal Guthaben viele vielleicht

326
00:17:42,760 --> 00:17:45,480
nicht alle, wir machen 
Kreditkarte, wir machen jetzt 

327
00:17:45,480 --> 00:17:49,360
einfach Kreditkarte, jetzt Visa,
ja und das ist jetzt eingestellt

328
00:17:49,360 --> 00:17:56,640
und Versand ja keine Ahnung 
essensbestellung wir haben wir 

329
00:17:56,640 --> 00:18:00,160
schicken den mit Fahrrad los so 
der fährt immer mit Fahrrad. 

330
00:18:00,880 --> 00:18:03,480
So, das ist jetzt so. 
Unser Shipping Service ist n 

331
00:18:03,480 --> 00:18:06,880
Mitarbeiter auf dem Weg weißt du
glaub ich ne ja so heißt das 

332
00:18:06,880 --> 00:18:10,680
glaub ich so heißen die hier ja 
schön Rucksack hinten drauf, da 

333
00:18:10,680 --> 00:18:14,640
ist die Pizza drin und los geht 
es so das heißt du hast ne sehr 

334
00:18:14,640 --> 00:18:18,160
sehr enge Kopplung, weil das ist
jetzt dein Order Service jetzt 

335
00:18:18,160 --> 00:18:22,960
bestellen die Leute und können 
nicht wählen wie Sie bezahlen 

336
00:18:22,960 --> 00:18:25,720
wollen wie es geliefert werden 
soll, die geben jetzt so ihre 

337
00:18:25,720 --> 00:18:28,720
Daten ein ich wohne da und da 
und bestellen. 

338
00:18:28,880 --> 00:18:31,520
Ja, so, für viele mag das jetzt 
gut gehen, ne Fahrrad, ja wie 

339
00:18:31,520 --> 00:18:33,400
weit? 
5 Straßen weiter kein Thema Fahr

340
00:18:33,400 --> 00:18:36,560
ich hin jetzt bestellt aber 
einer der im Nachbarort wohnt 

341
00:18:37,000 --> 00:18:41,360
weißt du und 10 Kilometer 
bergauf mit dem Fahrrad nervig. 

342
00:18:42,000 --> 00:18:47,040
Da wird das. 
Abendbrot Schneidig genau so, 

343
00:18:47,040 --> 00:18:49,520
aber du kannst es nicht ändern, 
weil das ja so eng gekoppelt 

344
00:18:49,520 --> 00:18:51,440
ist. 
Ja, also der Orderservice hat 

345
00:18:51,440 --> 00:18:53,360
sich jetzt nur mal so aufgebaut.
Doof. 

346
00:18:53,800 --> 00:18:57,200
Schwierig. 
Sehr schwierig und da denk ich 

347
00:18:57,200 --> 00:19:00,440
merkt man schon so. 
Na, wär schon cool, wenn ich 

348
00:19:00,440 --> 00:19:03,200
vielleicht das von außen so n 
bisschen reingeben könnte. 

349
00:19:03,360 --> 00:19:07,680
Ja und entscheiden kann mit 
meinen, mit meiner Außenwelt, 

350
00:19:07,680 --> 00:19:10,920
mit meinen Infos von draußen, 
was den Service an sich ja nicht

351
00:19:10,920 --> 00:19:14,400
interessiert, der will 
eigentlich nur wissen, ich 

352
00:19:14,400 --> 00:19:17,280
möchte also was für n shipment 
Service hab ich wo ihm das 

353
00:19:17,280 --> 00:19:18,960
vielleicht noch nicht mal 
richtig wichtig ist. 

354
00:19:18,960 --> 00:19:22,440
Was das für einer ist im besten 
Falle, sondern er möchte einfach

355
00:19:22,440 --> 00:19:25,120
n Service haben womit bezahlt 
werden kann, also nicht shipment

356
00:19:25,120 --> 00:19:27,760
geliefert werden kann und 
payment bezahlt werden kann. 

357
00:19:28,320 --> 00:19:31,480
Und von außen möchte er einfach 
nur vorgegeben oder mitgegeben 

358
00:19:31,480 --> 00:19:35,680
bekommen, was das für einer ist.
Weißt du ja ja klar genau, also 

359
00:19:35,800 --> 00:19:38,000
im Endeffekt, du hast ja schon 
gesagt, du bist ja viel 

360
00:19:38,000 --> 00:19:40,400
flexibler dadurch ne, also du 
hast ja ne viel viel höhere 

361
00:19:40,400 --> 00:19:43,840
Flexibilität, einfach allein 
dadurch, weil du ja zum Beispiel

362
00:19:43,840 --> 00:19:47,080
sagen kannst, Pass auf, ich 
möchte jetzt, ich hab zum 

363
00:19:47,080 --> 00:19:49,040
Beispiel keine Visa Karte, ich 
möchte das mit Paypal oder so 

364
00:19:49,040 --> 00:19:52,720
bezahlen, ne oder keine Ahnung, 
vielleicht geht es auch darum, 

365
00:19:52,720 --> 00:19:59,040
dass du das vielleicht auch der.
Der Lieferservice selber zum 

366
00:19:59,040 --> 00:20:02,400
Beispiel gucken kann also nicht,
dass du das selbst entscheidest.

367
00:20:02,400 --> 00:20:04,640
Das ist ja immer die Frage, von 
wo sozusagen diese Entscheidung 

368
00:20:04,640 --> 00:20:06,800
kommt, was jetzt injected wird, 
sag ich jetzt mal. 

369
00:20:07,120 --> 00:20:09,120
Aber vielleicht sagt der 
Lieferservice selber, guck mal 

370
00:20:09,120 --> 00:20:11,360
absurd, so viel Kilometer müssen
wir das Auto nehmen und nicht 

371
00:20:11,360 --> 00:20:13,880
mehr das Fahrrad oder keine 
Ahnung, vielleicht gibt es ja 

372
00:20:13,880 --> 00:20:16,640
verschiedene Lieferservices, 
beispielsweise die. 

373
00:20:17,680 --> 00:20:20,840
Irgendwie an also die sagen, OK,
ich würde das liefern, ne und 

374
00:20:20,840 --> 00:20:23,880
der eine sagt ich brauch 3 
Stunden weil die Halt nur 

375
00:20:23,880 --> 00:20:26,560
Fahrräder haben und der andere 
braucht halt 10 Minuten, weil 

376
00:20:26,560 --> 00:20:29,400
sie halt eben auch Autos haben 
oder Roller oder frag mich nicht

377
00:20:29,400 --> 00:20:32,720
ne also wird im Endeffekt 
einfach flexibel in der Software

378
00:20:32,720 --> 00:20:35,880
gesagt OK pass auf wir wir 
können das, wir können wir wir 

379
00:20:35,880 --> 00:20:40,800
haben überhaupt diese 
Möglichkeit die diese Auswahl 

380
00:20:40,800 --> 00:20:46,560
oder dieses dieses Dynamische ja
auswählen von Zahlungen und 

381
00:20:46,560 --> 00:20:49,840
Lieferungen ne. 
Und du bist natürlich auch super

382
00:20:49,840 --> 00:20:54,640
gut dabei, dass du auch alles 
natürlich deutlich einfacher 

383
00:20:54,640 --> 00:20:58,680
erweitern kannst. 
Am Ende ne, weil also nicht nur 

384
00:20:58,680 --> 00:21:01,280
die Flexibilität, sondern auch 
die Erweiterung deiner Software.

385
00:21:01,280 --> 00:21:03,120
Wenn du sagst okay du möchtest 
jetzt zum Beispiel noch einen 

386
00:21:03,120 --> 00:21:06,880
neuen Zahlservice beispielsweise
einführen, weil du sagst ja, 

387
00:21:06,880 --> 00:21:09,280
paypal, Visa ist irgendwie blöd,
vielleicht noch mastercard oder 

388
00:21:09,280 --> 00:21:11,440
keine, ich weiß gar nicht, was 
es da noch alles gibt. 

389
00:21:12,960 --> 00:21:14,960
Aber dass du halt irgendwie noch
ne mögliche oder klarer hast. 

390
00:21:14,960 --> 00:21:16,320
Du glaub ich auch sowas. 
Ne was irgendwie. 

391
00:21:16,320 --> 00:21:18,640
Ja, das ist so n Ding. 
Heutzutage, das ist so n Ding. 

392
00:21:18,720 --> 00:21:21,440
Klarer ist so n Ding. 
Kannst du eigentlich essen, auch

393
00:21:21,440 --> 00:21:23,520
auf Raten bezahlen? 
Ich weiß es nicht. 

394
00:21:24,800 --> 00:21:25,920
Du. 
Kriegst aber auch nur so n 

395
00:21:25,920 --> 00:21:29,760
Sechstel geliefert. 
Ja einmal 30€ oder jeden Tag im 

396
00:21:29,760 --> 00:21:34,480
Monat einen Euro genau, aber das
war halt ein Stück Pizza genau 

397
00:21:34,720 --> 00:21:37,200
und da kannst du halt einfach 
relativ schnell eben deine 

398
00:21:37,200 --> 00:21:38,960
Software erweitern, weil du halt
noch NN weiteren 

399
00:21:38,960 --> 00:21:42,480
Zahlungsanbieter hast, den Du 
dann auswählen kannst, den du 

400
00:21:42,560 --> 00:21:45,280
dann im Endeffekt nutzen kannst.
Und der Orderservice will ja 

401
00:21:45,280 --> 00:21:48,000
nicht nichts anderes wissen als 
zu sagen, OK, wie du schon 

402
00:21:48,000 --> 00:21:49,560
meintest, du brauchst irgendwie 
n Payment Service. 

403
00:21:50,960 --> 00:21:54,000
Der irgendwie Pay machen kann, 
also der will ja nichts wissen, 

404
00:21:54,000 --> 00:21:57,920
der also das ist ja auch wieder 
diese Umkehr, diese Inversion of

405
00:21:57,920 --> 00:22:02,640
Control, ne, also der der Order 
Service sagt jetzt ey, ich muss 

406
00:22:02,640 --> 00:22:06,640
irgendwie sagen bezahl ne und 
das geb ich aber jetzt 

407
00:22:06,640 --> 00:22:10,320
beispielsweise eben an den 
Payment Service ab und der 

408
00:22:10,320 --> 00:22:14,840
Payment Service, egal was das 
ist, ob jetzt gerade am Ende da 

409
00:22:14,840 --> 00:22:18,440
n Claner drunter liegt oder 
Paypal oder Visa ist mir völlig 

410
00:22:18,440 --> 00:22:19,760
egal. 
Aber du machst das. 

411
00:22:20,160 --> 00:22:22,920
Payment Service du zahlst das 
Ding so nach dem Motto. 

412
00:22:24,720 --> 00:22:29,040
Ja, aber im Prinzip lass uns mal
noch ein Gedankenbeispiel 

413
00:22:29,040 --> 00:22:30,840
weitergehen. 
Ich gebe dir mal so ein kleines 

414
00:22:30,840 --> 00:22:36,720
Szenario, ja, weil wir ja gesagt
haben, Testbarkeit und jetzt 

415
00:22:37,040 --> 00:22:41,200
möchte ich eine Funktion haben, 
also das ist jetzt so deine 

416
00:22:41,200 --> 00:22:44,720
Anforderung, die ich dir jetzt 
gebe, ne, dass quasi. 

417
00:22:45,920 --> 00:22:49,680
Im Order Service ermittelt wird.
Wenn ich bestellt habe, wie 

418
00:22:49,680 --> 00:22:51,520
lange ungefähr die Lieferzeit 
ist. 

419
00:22:53,360 --> 00:22:57,520
So und das möchtest du jetzt 
abtesten was für Probleme das 

420
00:22:57,520 --> 00:22:58,960
geht ja jetzt in die gleiche 
Richtung was wir gerade 

421
00:22:58,960 --> 00:23:01,600
besprochen haben, aber um mal 
das an einem klaren Feature ja 

422
00:23:01,600 --> 00:23:05,360
auch mal zu geben, was ist jetzt
der bessere Weg wenn ich es 

423
00:23:05,360 --> 00:23:08,400
testen möchte also ja 
Spoilerwarnung das mit 

424
00:23:08,400 --> 00:23:11,040
Dependency Injection zu machen 
aber wieso? 

425
00:23:11,040 --> 00:23:14,000
Weil wer auf welche Probleme 
treff ich denn wenn ich das 

426
00:23:14,000 --> 00:23:19,320
nicht mache? 
Na also ich geh erst mal weiter 

427
00:23:19,320 --> 00:23:22,080
mit deinem, mit deinem, mit 
deinem Lieferzeit. 

428
00:23:22,800 --> 00:23:25,200
Weil also das erste was mir 
einfallen würde wäre, dass du ja

429
00:23:25,200 --> 00:23:27,200
auf jeden Fall in deinem Test 
nicht tatsächlich einen 

430
00:23:27,200 --> 00:23:28,560
Lieferservice ansprechen 
möchtest. 

431
00:23:28,880 --> 00:23:30,960
Nee, du möchtest nicht 
tatsächlich bezahlen und du 

432
00:23:30,960 --> 00:23:33,200
möchtest auch nicht tatsächlich 
jetzt etwas verschiffen. 

433
00:23:33,520 --> 00:23:36,000
Ne, deswegen möchtest du nicht 
diese Services nehmen, sondern 

434
00:23:36,000 --> 00:23:38,160
du kannst es halt zum Beispiel 
Mocken und einfach zum Beispiel 

435
00:23:38,160 --> 00:23:41,120
sagen, ja OK, ich nehme jetzt 
aber meintest Payment Service 

436
00:23:41,120 --> 00:23:45,120
und mein Testlieferservice so 
als Beispiel ne das wäre ja ne 

437
00:23:45,120 --> 00:23:48,560
Möglichkeit, aber du hattest 
jetzt zum Beispiel noch 

438
00:23:48,560 --> 00:23:52,160
angesprochen lieferzeitraum oder
sowas. 

439
00:23:52,720 --> 00:23:55,120
Ne Lieferzeit, weil das ist ja 
genau der Punkt. 

440
00:23:55,120 --> 00:23:58,280
Ne wenn ich jetzt verschiedene 
shipment services hab ne und ich

441
00:23:58,280 --> 00:24:00,480
möchte zum Beispiel wissen wie 
lange dauert das? 

442
00:24:01,040 --> 00:24:03,400
Wenn er mit Fahrrad fährt, mit 
dem Roller oder mit dem Auto 

443
00:24:03,400 --> 00:24:06,160
oder zum Beispiel das abhängig 
machen von der Entfernung. 

444
00:24:06,160 --> 00:24:09,840
Wer bestellt hat, dann will ich 
ja so ne Szenarien testen und 

445
00:24:09,840 --> 00:24:12,760
aufbauen können und da bist du 
ja gerade schon genau in die 

446
00:24:12,760 --> 00:24:15,600
richtige Richtung gegangen. 
Warum das mit Dependency 

447
00:24:15,600 --> 00:24:17,920
Injection einfach viel besser 
funktioniert. 

448
00:24:18,240 --> 00:24:21,960
Ja, ja, also es ist ja 
beispielsweise, wenn du jetzt 

449
00:24:21,960 --> 00:24:25,600
zum Beispiel wirklich sagst, ey,
ich möchte jetzt. 

450
00:24:25,920 --> 00:24:28,800
Verifizieren, dass ab der und 
der Kilometerlänge 

451
00:24:28,800 --> 00:24:30,800
beispielsweise auch wirklich n 
Auto genutzt wird. 

452
00:24:30,960 --> 00:24:33,080
Dann kannst du das ja wie ich 
halt eben auch schon n bisschen 

453
00:24:33,080 --> 00:24:34,880
so meinte. 
Du kannst es mocken, du kannst 

454
00:24:34,880 --> 00:24:39,400
ja sagen OK pass auf, du gibst 
jetzt zum Beispiel vor, das sind

455
00:24:39,400 --> 00:24:43,040
die Bedingungen ne und anhand 
dieser Bedingung teste ich 

456
00:24:43,040 --> 00:24:45,520
jetzt, dass dass halt eben zum 
Beispiel auch wirklich das Auto 

457
00:24:45,520 --> 00:24:48,000
verwendet wird und dafür, dass 
du es aber auch so machen kannst

458
00:24:48,000 --> 00:24:50,760
und das so vorgeben kannst. 
Mogst du halt deine 

459
00:24:50,760 --> 00:24:54,400
entsprechende, sag ich mal deine
entsprechenden Kriterien 

460
00:24:54,400 --> 00:24:57,760
innerhalb der Services, die halt
diese Dependencies beinhalten. 

461
00:24:57,760 --> 00:25:01,520
Ne, also alles was 
Abhängigkeiten sind kannst du 

462
00:25:01,520 --> 00:25:05,520
sozusagen einfach faken, ne, 
also du kannst halt einfach 

463
00:25:05,520 --> 00:25:08,200
vorgeben was da passieren soll, 
ohne dass du halt am Ende 

464
00:25:08,200 --> 00:25:11,840
wirklich das nutzt, was 
wirklich, ich sag mal in echt 

465
00:25:12,120 --> 00:25:14,000
irgendwie passiert. 
Das heißt du kannst es halt 

466
00:25:14,160 --> 00:25:17,840
explizit auf deine sag ich mal 
Testfälle auch anpassen. 

467
00:25:18,160 --> 00:25:19,440
Das, was du für mich testen 
willst. 

468
00:25:19,840 --> 00:25:24,960
Und das ist halt n Riesen riesen
Benefit und das können ja auch 

469
00:25:24,960 --> 00:25:28,120
mogs, also können ja auch sehr 
stumpf sein ne? 

470
00:25:28,120 --> 00:25:31,360
Also ich kann ja jetzt zum 
Beispiel auch nen Shipment 

471
00:25:31,360 --> 00:25:34,560
Service implementieren, der 
einfach dann sagt ja wie lange 

472
00:25:34,560 --> 00:25:38,600
brauchst du 10 Minuten ja immer 
10 Minuten, aber das ist ja 

473
00:25:38,600 --> 00:25:41,600
egal, weil ich gebe diese 
Abhängigkeit ja rein. 

474
00:25:41,840 --> 00:25:45,680
In mein Order Service und dann 
kriegt er halt immer 10 Minuten 

475
00:25:45,680 --> 00:25:48,080
angegeben, aber das ist ja genau
das, was ich jetzt gerade 

476
00:25:48,080 --> 00:25:50,400
vielleicht in meinem Testfall 
verwenden möchte. 

477
00:25:50,560 --> 00:25:54,320
Ja, dass du halt sowas sagst wie
ich möchte, gewisse 

478
00:25:54,320 --> 00:25:57,600
Funktionalitäten im Order 
Service testen, wenn der 

479
00:25:57,600 --> 00:26:01,840
Shipment Service sagt ich brauch
10 Minuten oder bei meinem 

480
00:26:01,840 --> 00:26:05,080
Payment Service ist mir im Test 
vielleicht egal wer das jetzt 

481
00:26:05,080 --> 00:26:08,720
bezahlt, ich möchte einfach nur 
von außen vorgehen können ob es 

482
00:26:08,720 --> 00:26:11,720
bezahlt wurde oder zum Beispiel 
n Transaktionsfehler war so. 

483
00:26:11,840 --> 00:26:14,480
Solche Geschichten, und das kann
ich ja alles von außen 

484
00:26:14,480 --> 00:26:17,720
reingeben, und das ist mein 
riesen riesen Vorteil in Sachen 

485
00:26:17,720 --> 00:26:19,840
Testbarkeit. 
Ja, auf jeden Fall. 

486
00:26:20,080 --> 00:26:26,480
Also das Testbarkeit sowieso. 
Es ist n Riesenthema, ich weiß, 

487
00:26:26,480 --> 00:26:28,320
das klingt manchmal so n 
bisschen so, als würden wir 

488
00:26:28,320 --> 00:26:33,040
irgendwie das ganze. 
Haben wir so ne Tester Sekte, 

489
00:26:33,360 --> 00:26:36,080
aber es ist halt wirklich sehr 
sehr wichtig, dass man sich halt

490
00:26:36,080 --> 00:26:39,080
eben dann auch auf den Code 
verlassen kann und dazu zählt 

491
00:26:39,080 --> 00:26:42,080
halt eben, dass man eben seinen 
Code auch richtig testet und da 

492
00:26:42,080 --> 00:26:44,840
ist es halt wieder wichtig, dass
der Code auch testbar ist und 

493
00:26:44,840 --> 00:26:48,240
das geht halt zum Beispiel 
zumindest aus unserer Erfahrung 

494
00:26:48,240 --> 00:26:50,320
auch immer sehr gut, zum 
Beispiel mit Dependency 

495
00:26:50,320 --> 00:26:53,480
Injection. 
Also das ist NNN sehr sehr 

496
00:26:53,480 --> 00:26:57,320
großer Vorteil, ansonsten hast 
du natürlich auch noch, weil wir

497
00:26:57,320 --> 00:27:00,120
ja gerade noch n bisschen bei 
Vorteilen sind, auch zum 

498
00:27:00,120 --> 00:27:03,680
Beispiel die. 
Die Lesbarkeit also du hast halt

499
00:27:03,760 --> 00:27:10,040
klar, du siehst halt relativ 
klar und nachvollziehbar wo die 

500
00:27:10,040 --> 00:27:11,600
Abhängigkeiten. 
Ich sag jetzt in 

501
00:27:11,600 --> 00:27:13,280
Anführungsstrichen mal fließen, 
weißt du? 

502
00:27:13,760 --> 00:27:15,520
Ja. 
Und das hatten wir vorhin auch 

503
00:27:15,520 --> 00:27:18,160
schon n bisschen angesprochen 
und da hatten wir auch schon mal

504
00:27:18,160 --> 00:27:20,920
ne Folge drüber gemacht. 
Über die Solid Prinzipien und 

505
00:27:20,920 --> 00:27:23,920
gerade dieses Single 
Responsibility Principal, was 

506
00:27:23,920 --> 00:27:27,000
wir auch besprochen hatten, also
die Beziehung lieber hör da 

507
00:27:27,000 --> 00:27:28,880
gerne mal rein, wenn dich das 
interessiert und du sagst Ey 

508
00:27:28,880 --> 00:27:31,000
solid ey, das klingt cool, 
wollte ich schon immer mal was 

509
00:27:31,000 --> 00:27:33,840
drüber hören, da haben wir ne 
Folge drüber gemacht, aber genau

510
00:27:33,840 --> 00:27:38,240
diese Single Responsibility, die
hast du ja dadurch gegeben, weil

511
00:27:38,240 --> 00:27:40,920
du ja zum Beispiel sagst OK du 
hast n Order Service der sagt OK

512
00:27:40,920 --> 00:27:43,280
ich nehme zum Beispiel diese 
entsprechende Order entgegen. 

513
00:27:43,920 --> 00:27:47,200
Ne und berechne vielleicht 
wieviel bezahlt werden muss und 

514
00:27:47,200 --> 00:27:51,040
wohin es geliefert werden muss, 
aber die tatsächliche Ausführung

515
00:27:51,040 --> 00:27:54,520
des Zahlens, das wird halt 
woanders hingegeben. 

516
00:27:54,520 --> 00:27:58,400
Ne an den Payment Service und 
die tatsächliche Lieferung des 

517
00:27:58,400 --> 00:28:01,520
Ganzen wird halt dann wieder n 
shipment Service gegeben und das

518
00:28:01,520 --> 00:28:05,520
ist halt genau diese 
Verantwortlichkeit die da im 

519
00:28:05,520 --> 00:28:07,480
Endeffekt auch getrennt wird, 
was am Ende natürlich auch ne 

520
00:28:07,480 --> 00:28:12,240
gute Architektur der Software 
zugrunde hat, ne oder dann? 

521
00:28:12,880 --> 00:28:17,360
Als Grundstein sozusagen. 
Ich finde halt den Punkt auch 

522
00:28:17,360 --> 00:28:19,600
wirklich wichtig, Lesbarkeit zu 
sagen. 

523
00:28:19,600 --> 00:28:24,320
Ich sehe, welche Klassen 
verwendet werden von anderen 

524
00:28:24,320 --> 00:28:28,160
Klassen, indem ich zum Beispiel 
im Konstruktor ja schon nehmen, 

525
00:28:28,160 --> 00:28:30,560
also wir kommen gleich auf die 
Form der Dependence Injection, 

526
00:28:30,560 --> 00:28:32,880
aber gehen wir jetzt mal vom 
Konstruktor aus, dass ich eine 

527
00:28:33,360 --> 00:28:38,320
Constructor injection mache und 
den Service über den Konstruktor

528
00:28:38,320 --> 00:28:42,080
in meinen Service reingebe ja. 
Und dadurch sehe ich halt auch 

529
00:28:42,080 --> 00:28:45,600
gleich schon von der Architektur
her, welche Abhängigkeiten da 

530
00:28:45,600 --> 00:28:48,400
sind, weil ich möchte noch mal 
ganz kurz auf das Singletonpad 

531
00:28:48,400 --> 00:28:51,120
dann eingehen, weswegen hier 
überhaupt diese Folge jetzt da 

532
00:28:51,120 --> 00:28:52,920
ist. 
Ja, weil wir, da hatten wir ja 

533
00:28:52,920 --> 00:28:55,840
gesagt, du hast irgendwann 
keinen Überblick mehr, wer 

534
00:28:55,840 --> 00:28:59,360
verwendet jetzt diese Singleton 
Instanz und manipuliert sie 

535
00:28:59,360 --> 00:29:01,680
vielleicht ja oder ruft da 
Funktionen auf und du weißt 

536
00:29:01,680 --> 00:29:04,360
einfach gar nicht mehr, wo sie 
überall in deiner Software ist, 

537
00:29:04,360 --> 00:29:07,840
weil sie so global am Ende ist. 
Und das ist der Vorteil an 

538
00:29:07,840 --> 00:29:10,600
Dependency Injection. 
Wenn ich jetzt sage, ich möchte 

539
00:29:10,600 --> 00:29:13,440
es nicht als Single umsetzen, 
sondern ich habe eine Klasse, 

540
00:29:13,440 --> 00:29:17,440
die ich sehr viel brauche 
überall, dann kann ich sie aber 

541
00:29:17,440 --> 00:29:23,040
genauso da, wo ich sie brauche, 
via dependency Injection halt 

542
00:29:23,040 --> 00:29:27,200
mit Reingeben und seh aber dann 
auch, dass sie da verwendet 

543
00:29:27,200 --> 00:29:29,920
wird. 
Und das ist halt auch n Prinzip,

544
00:29:29,920 --> 00:29:33,400
was ja auch viele Frameworks 
verwenden, zum Beispiel wenn 

545
00:29:33,400 --> 00:29:36,880
Leute mit Angular arbeiten. 
Die Services werden ja auch 

546
00:29:36,880 --> 00:29:41,600
injiziert in deine Components 
beispielsweise, und das ist auch

547
00:29:41,600 --> 00:29:46,080
ne ne sehr coole Art und Weise 
damit zu arbeiten am Ende, um 

548
00:29:46,080 --> 00:29:48,160
zum Beispiel auf gleichen 
Instanzen zu arbeiten. 

549
00:29:48,160 --> 00:29:50,720
Wir hatten jetzt zum Beispiel 
gesagt, N Logger Service, so 

550
00:29:50,720 --> 00:29:54,040
beispielsweise wär jetzt so n so
n klassisches Beispiel, dann 

551
00:29:54,040 --> 00:29:57,320
möchte ich natürlich. 
Eine Instanz eines Loggers haben

552
00:29:57,320 --> 00:30:00,440
und wenn ich irgendwo n log 
aufrufe, dann möchte ich zum 

553
00:30:00,440 --> 00:30:02,960
Beispiel, dass es auch wirklich 
im gleichen Logfile landet oder 

554
00:30:02,960 --> 00:30:06,640
in der gleichen Ausgabe 
allgemein, aber das kann ich 

555
00:30:06,640 --> 00:30:09,200
dann halt mit dependency 
Injection lösen und hab halt 

556
00:30:09,200 --> 00:30:11,600
auch im Test dann die 
Möglichkeit von außen 

557
00:30:11,680 --> 00:30:14,000
vorzugehen, wie dieser 
Loggerservice aussieht. 

558
00:30:14,000 --> 00:30:16,400
Ne und das ist n Riesenvorteil 
dabei. 

559
00:30:17,360 --> 00:30:20,000
Im Umkehrschluss wär es n Single
nur und der wär einfach überall 

560
00:30:20,000 --> 00:30:22,600
fest integriert. 
Da hab ich in meinen Tests auf 

561
00:30:22,600 --> 00:30:27,040
einmal irgendwelche logs wo ich 
mir denke hä mal so weißt du so 

562
00:30:27,040 --> 00:30:28,160
als Side? 
Effects mal. 

563
00:30:28,560 --> 00:30:32,720
Na ja, das kommt dann so flaky 
Tests unter Umständen gerade bei

564
00:30:32,880 --> 00:30:35,960
Singletons hatten wir auch 
besprochen, das kann man 

565
00:30:35,960 --> 00:30:38,800
natürlich super vermeiden dann 
durch Dependency Injection, du 

566
00:30:38,800 --> 00:30:41,000
hattest ja gerade zum Beispiel 
angesprochen Constructor 

567
00:30:41,000 --> 00:30:45,280
injection ne, also das ist auch 
glaub ich das was. 

568
00:30:45,560 --> 00:30:49,120
Irgendwie super häufig vorkommt.
Also eigentlich, ich würde 

569
00:30:49,120 --> 00:30:52,760
sagen, wenn man die Penancy 
Injection benutzt, kenn ich das 

570
00:30:52,760 --> 00:30:54,920
eigentlich hauptsächlich so, 
dass es über Constructor 

571
00:30:54,920 --> 00:30:58,480
Injection passiert. 
Du hattest das ja schon mal n 

572
00:30:58,480 --> 00:31:01,360
bisschen angesprochen, eben 
gerade Constructor Injection, 

573
00:31:01,760 --> 00:31:05,200
die Abhängigkeiten werden über 
den konstruktor Halt injiziert, 

574
00:31:05,200 --> 00:31:07,760
ne, also es klingt halt immer 
so. 

575
00:31:07,760 --> 00:31:10,320
Wie gesagt, ich ich meinte wär 
vorhin schon das klingt so 

576
00:31:10,320 --> 00:31:13,080
hochtrabend manchmal, Injection 
ist ja nichts anderes, als dass 

577
00:31:13,080 --> 00:31:15,040
du n Parameter übergibst, dass 
du einfach sagst. 

578
00:31:15,600 --> 00:31:18,000
Du erzeugst jetzt zum Beispiel 
diesen Order Service, den wir 

579
00:31:18,000 --> 00:31:21,680
hatten und dann gibst du in den 
Konstruktor den Payment Service 

580
00:31:21,680 --> 00:31:25,760
mit rein, als Parameter Übergabe
sozusagen ne in den Konstanz 

581
00:31:25,760 --> 00:31:29,840
davor, genau genau und halt den 
Shipping Service genauso ne und 

582
00:31:29,920 --> 00:31:34,200
dann hast du die halt und musst 
die dann halt eben so wie man es

583
00:31:34,200 --> 00:31:37,120
halt kennt über den Konstruktor 
in das Objekt reingeben ne so, 

584
00:31:37,360 --> 00:31:40,160
aber das ist ja beispielsweise 
halt eine Sache die man jetzt 

585
00:31:40,160 --> 00:31:43,280
gibt ja noch andere Formen hast 
du noch ne andere? 

586
00:31:44,880 --> 00:31:50,720
Was es halt auch gibt ist so 
Setter Injection, also so auch 

587
00:31:50,720 --> 00:31:57,360
klassisch über eine Set Funktion
macht das Ganze natürlich noch 

588
00:31:57,360 --> 00:32:00,320
ein Stück weit flexibler, weil 
es nicht an den Konstruktor 

589
00:32:00,320 --> 00:32:03,080
gebunden ist. 
Das heißt ich kann diesen 

590
00:32:03,080 --> 00:32:09,240
Service Instanziieren ohne diese
Abhängigkeit reinzugeben und 

591
00:32:09,240 --> 00:32:11,840
kann zur. 
Also irgendwie an einer anderen 

592
00:32:11,840 --> 00:32:15,040
Stelle zur Laufzeit. 
Zum Beispiel dann das Setten, 

593
00:32:15,040 --> 00:32:19,200
also dann wirklich setzen. 
Diese Abhängigkeit, das klingt n

594
00:32:19,200 --> 00:32:22,160
Stück weit flexibler, ist es 
irgendwo auch, aber ich finde 

595
00:32:22,400 --> 00:32:25,000
mir ist das manchmal nicht so 
explizit genug, wenn ich so 

596
00:32:25,000 --> 00:32:29,200
drüber nachdenke, weil ich halt 
mich vielleicht zu sehr 

597
00:32:29,200 --> 00:32:32,320
entkoppel davon, ich weiß nicht,
wie es anders sagen soll, aber. 

598
00:32:32,960 --> 00:32:35,280
Was ist, wenn du diesen Setter 
nie aufrufst oder vergisst, ihn 

599
00:32:35,280 --> 00:32:37,920
aufzuhören? 
Richtig so, ja, das ist oder 

600
00:32:37,920 --> 00:32:40,880
oder rufst ihn einfach aus 
Versehen noch mal irgendwann auf

601
00:32:40,880 --> 00:32:43,320
und überschreibst dir wieder 
Sachen, weil du halt wie gesagt 

602
00:32:43,320 --> 00:32:46,680
diese Instanz neu setzt da drin,
das find ich, ist halt auch 

603
00:32:46,680 --> 00:32:51,160
immer so n bisschen schwierig, 
aber hat also wenn du diese 

604
00:32:51,160 --> 00:32:53,360
Flexibilität brauchst ist es auf
jeden Fall n valider 

605
00:32:53,360 --> 00:32:57,040
Anwendungsfall das so zu machen.
Ja, also ich glaub es gibt es, 

606
00:32:57,040 --> 00:32:59,040
weil man das vielleicht wirklich
irgendwie verwenden kann. 

607
00:32:59,040 --> 00:33:01,120
Ich hab das glaub ich selbst 
noch nie verwendet. 

608
00:33:01,680 --> 00:33:04,120
Ich find es halt auch genau aus 
den Gründen, die du gerade 

609
00:33:04,120 --> 00:33:07,280
genannt hast, finde ich es 
schwierig, weil du kannst ja 

610
00:33:07,280 --> 00:33:10,560
irgendwie gar nicht 
gewährleisten, ob dann zum 

611
00:33:10,560 --> 00:33:14,640
Beispiel dieser Setter, also ob 
ob das wirklich gesetzt ist, was

612
00:33:14,640 --> 00:33:17,600
du setzen sollst. 
Oder du musst vielleicht 

613
00:33:17,600 --> 00:33:20,040
irgendwie wieder ne Behandlung 
dahinter irgendwie machen, wenn 

614
00:33:20,040 --> 00:33:22,960
du sagst, ja, das gibt es aber 
gar nicht, weil du halt die 

615
00:33:22,960 --> 00:33:24,800
Dependency eben nicht injected 
hast. 

616
00:33:24,800 --> 00:33:30,800
Ne, das ist wahrscheinlich sehr.
Anwendungsspezifisch, dass man 

617
00:33:30,800 --> 00:33:33,760
bestimmt sagt. 
Ja, wenn du, ich glaube halt. 

618
00:33:33,760 --> 00:33:36,960
Wenn du es also ich will, sagen 
wir mal so ne Art lazy load ja, 

619
00:33:36,960 --> 00:33:42,000
also wenn du quasi zum Erstellen
deines eigentlichen Service noch

620
00:33:42,000 --> 00:33:44,560
nicht die Abhängigkeit 
definieren kannst oder so und 

621
00:33:44,560 --> 00:33:46,320
das irgendwie nachgelagert 
kommt. 

622
00:33:46,800 --> 00:33:49,840
Aus Gründen einfach aus Gründen 
deiner Software. 

623
00:33:50,080 --> 00:33:53,360
OK, dann ist das ne ne ne 
architekturentscheidung die 

624
00:33:53,360 --> 00:33:56,320
vertretbar ist. 
Aber wenn ich es eigentlich 

625
00:33:56,320 --> 00:33:58,840
schon zum Erstellen des Service 
weiß, würd ich es halt auch n 

626
00:33:58,840 --> 00:34:00,160
Konstruktor hauen, ehrlich 
gesagt. 

627
00:34:00,160 --> 00:34:03,680
Ja, dann gibt es ja glaub ich 
noch ne dritte Sache. 

628
00:34:03,680 --> 00:34:06,480
Das ist diese Interface 
Injection, da bin ich ganz 

629
00:34:06,480 --> 00:34:10,840
ehrlich, das hab ich auch noch 
nie genutzt so eine Interface 

630
00:34:10,840 --> 00:34:13,920
injection ich weiß nicht wie es 
wie es dir geht, ob du das schon

631
00:34:13,920 --> 00:34:18,639
mal verwendet hast oder nicht. 
Also nee, ich. 

632
00:34:18,639 --> 00:34:20,400
Bin ja meins. 
Es wird auch relativ wenig 

633
00:34:20,400 --> 00:34:25,400
verwendet, aber keine Ahnung hab
ich. 

634
00:34:25,440 --> 00:34:29,440
Also das ist halt noch mal noch 
mal n Schritt weiter ne, also 

635
00:34:29,440 --> 00:34:34,000
dass du sagst ich gebe jetzt 
keine Instanz einer festen 

636
00:34:34,000 --> 00:34:38,000
Klasse rein. 
Ja und hab so meine Dependency 

637
00:34:38,000 --> 00:34:41,760
Injection, sondern ich verwende 
jetzt noch Interfaces dafür, so 

638
00:34:41,760 --> 00:34:43,679
versteh ich das Prinzip 
dahinter. 

639
00:34:44,239 --> 00:34:47,760
Das heißt, ich implementiere 
meine Klasse. 

640
00:34:47,760 --> 00:34:51,199
Also nein, meine Klasse 
implementiert ein Interface, was

641
00:34:51,199 --> 00:34:54,920
zum Beispiel sagt Inject, also 
ich hab ne Funktion inject und 

642
00:34:54,920 --> 00:34:57,760
da muss ich einen gewissen Typ 
reingeben. 

643
00:34:58,160 --> 00:35:02,560
Ja. 
Ja, in diese Funktion, um so 

644
00:35:02,560 --> 00:35:05,080
dann quasi bereitzustellen, wenn
ich das als klasse 

645
00:35:05,080 --> 00:35:08,160
implementiere, dass es eine 
inject Methode von außen gibt, 

646
00:35:08,160 --> 00:35:11,520
wo ich meine Abhängigkeit dann 
mitgeben kann. 

647
00:35:12,320 --> 00:35:14,520
Aber was ich dabei wieder 
schwierig finde, ich mein gut, 

648
00:35:14,520 --> 00:35:16,880
das hast du immer. 
Am Ende ist es ne Coding Frage 

649
00:35:16,880 --> 00:35:20,400
ne aber mein erster Gedanke war 
ja dann sag ich ich implementier

650
00:35:20,400 --> 00:35:24,240
inject und mach da einfach gar 
nichts drin sowas dann hab ich 

651
00:35:24,240 --> 00:35:27,320
da nämlich überhaupt nichts 
injiziert am Ende andererseits 

652
00:35:27,320 --> 00:35:29,160
kannst du natürlich sagen ich 
kann auch n Parameter n 

653
00:35:29,160 --> 00:35:32,000
Konstruktor reingehen und dich 
ignorieren ja also weißt du es 

654
00:35:32,000 --> 00:35:35,120
denn halt wirklich dass ja weißt
du was mir gerade einfällt, ich 

655
00:35:35,120 --> 00:35:37,360
hab das doch schon mal 
verwendet, das ist jetzt gerade 

656
00:35:37,360 --> 00:35:39,560
in dem Moment fällt mir das ein,
weil was auf der das 

657
00:35:39,560 --> 00:35:44,000
Anwendungsbeispiel war. 
Du hast n Repository, ne, also 

658
00:35:44,000 --> 00:35:46,840
das ist jetzt wirklich codebase,
also codetechnisch ne, also n 

659
00:35:46,840 --> 00:35:49,760
Repository ist ja zum Beispiel 
sozusagen der die Schnittstelle 

660
00:35:50,080 --> 00:35:53,200
die zur Datenbank geht ne und 
wenn du jetzt sagst du hast 

661
00:35:53,200 --> 00:35:55,760
diese Schnittstelle in deiner 
Software die zur Datenbank geht,

662
00:35:55,760 --> 00:35:58,040
ne dein Repository also wir 
hatten das zum Beispiel 

663
00:35:58,160 --> 00:36:02,720
Repository genannt und du willst
es testen, ne, dann kannst du ja

664
00:36:02,720 --> 00:36:04,880
rein theoretisch sagen ja OK, 
ich hab aber jetzt in meinen 

665
00:36:04,880 --> 00:36:08,640
Tests zum Beispiel nicht meine 
echte Datenbank, also haben wir 

666
00:36:08,640 --> 00:36:11,120
sozusagen immer in unserem 
produktiven Code. 

667
00:36:11,600 --> 00:36:15,520
N Interface von dem 
entsprechenden Repository zum 

668
00:36:15,520 --> 00:36:19,680
Beispiel, sagen wir mal in also 
User Repository Interface, nenn 

669
00:36:19,680 --> 00:36:23,360
ich das jetzt mal ne haben wir 
immer injected und in 

670
00:36:23,360 --> 00:36:26,960
Produktivcode wurde sozusagen 
immer, also wurde die Instanz 

671
00:36:26,960 --> 00:36:31,200
Injected des richtigen User 
Repositories weißt du was dann 

672
00:36:31,200 --> 00:36:34,720
im Endeffekt dieses User 
Repository Interface 

673
00:36:34,720 --> 00:36:37,680
implementiert? 
Und dann gab es noch n Test User

674
00:36:37,680 --> 00:36:41,760
Repository, was eben auch dieses
User Repository Interface 

675
00:36:41,760 --> 00:36:43,360
implementiert hat und dann 
konntest du halt. 

676
00:36:43,600 --> 00:36:47,200
Fällt mir jetzt gerade ein rein 
theoretisch relativ easy sagen 

677
00:36:47,200 --> 00:36:50,840
OK pass auf, du kannst in deiner
produktiven Anwendung ne, also 

678
00:36:50,840 --> 00:36:53,440
so wie es halt wie der Code halt
wirklich läuft hattest du 

679
00:36:53,440 --> 00:36:56,520
wirklich die zu den Zugriff auf 
die Datenbank über das echte 

680
00:36:56,520 --> 00:36:57,920
Repository in 
Anführungsstrichen? 

681
00:36:58,800 --> 00:37:01,360
Und im Test war es dann aber so,
dass man eigentlich nur gegen so

682
00:37:01,360 --> 00:37:03,920
n gewissen Fake gegangen ist. 
Ne den man dann injected. 

683
00:37:03,920 --> 00:37:06,640
Hat an der Stelle aber den 
Anwendungsfall kenn ich auch und

684
00:37:06,640 --> 00:37:08,880
der ist auch richtig gut das so 
zu machen. 

685
00:37:09,040 --> 00:37:11,600
Aber ich. 
Wenn ich sowas verwendet hab, 

686
00:37:11,600 --> 00:37:13,920
hab ich es aber nicht so in 
diesem klassischen Interface 

687
00:37:13,920 --> 00:37:16,960
Injection Prinzip umgesetzt, 
dass ich halt quasi in meiner 

688
00:37:16,960 --> 00:37:19,520
Klasse ein Interface 
implementiere mit einer inject 

689
00:37:19,520 --> 00:37:23,040
Methode, sondern ich hab halt 
gesagt, es gibt so Interfaces 

690
00:37:23,200 --> 00:37:25,800
die Abhängigkeiten darstellen, 
aber ich kann sagen wie dieses 

691
00:37:25,800 --> 00:37:28,400
Interface aussieht von außen 
oder wie ich es implementiere 

692
00:37:30,080 --> 00:37:32,200
deswegen. 
Also ich weiß nicht, also wenn 

693
00:37:32,200 --> 00:37:35,760
das darunter zählt, ja dann hab 
ich es so auch verwendet, aber 

694
00:37:36,000 --> 00:37:38,960
so nach der Recherche wieso 
dieses klassische? 

695
00:37:39,680 --> 00:37:42,000
Aber da dieses klassische 
Interface Injection aussieht, 

696
00:37:42,000 --> 00:37:43,920
muss ich sagen, so hab ich es. 
So lieb gemacht. 

697
00:37:45,520 --> 00:37:48,680
Also Liebe zu, lieber Zuhörer, 
wenn du Interface Injection 

698
00:37:48,680 --> 00:37:51,320
schon mal verwendet hast oder 
sagst, ja, das ist so. 

699
00:37:51,320 --> 00:37:53,320
Richtig lehrbuchhaft. 
Dann sag es uns. 

700
00:37:53,440 --> 00:37:58,160
Dann schreib uns das auf jeden 
Fall, aber ich würd sagen, 

701
00:37:58,160 --> 00:38:00,560
genau, also es gibt auf jeden 
Fall verschiedene Möglichkeiten 

702
00:38:00,560 --> 00:38:05,280
diese Dependence Injection am 
Ende wirklich umzusetzen und. 

703
00:38:05,760 --> 00:38:07,840
Ich würde sagen, wir können ja 
noch mal irgendwie gucken, dass 

704
00:38:07,840 --> 00:38:10,480
wir so ein paar Tipps und Best 
Practices vielleicht so 

705
00:38:10,480 --> 00:38:15,120
mitnehmen, die man vielleicht 
noch mal dann so zum Abschluss 

706
00:38:15,600 --> 00:38:18,800
so was auf dem Weg mitgeben 
kann. 

707
00:38:19,120 --> 00:38:24,440
Ja, ich fange mal an, es ist 
naheliegend, aber wir möchten es

708
00:38:24,440 --> 00:38:28,880
trotzdem anmerken, denke ich. 
Dependency Injection ist eine 

709
00:38:28,880 --> 00:38:33,120
sehr, sehr gute Sache. 
Aber auch bitte hier Vorsicht, 

710
00:38:33,120 --> 00:38:37,120
wenn ich anfange, alles darüber 
zu machen, nur so als Reminder, 

711
00:38:37,120 --> 00:38:39,400
wie ich damals im Studium mich 
verhalten hab, wenn ich 

712
00:38:39,400 --> 00:38:41,960
irgendwie was Neues gelernt 
hatte oder neues Pattern 

713
00:38:41,960 --> 00:38:43,760
kennengelernt hab, dann hab ich 
es einfach überall erstmal 

714
00:38:43,760 --> 00:38:46,560
verwendet. 
Also ja kann man machen, aber 

715
00:38:46,560 --> 00:38:50,080
auch Dependency Injection hat 
seine Grenzen wenn ich jetzt zum

716
00:38:50,080 --> 00:38:52,800
Beispiel merke ich hab ne klasse
und ich muss da irgendwie 56 

717
00:38:53,360 --> 00:38:57,320
Instanzen von Klassen injizieren
um die zu verwenden. 

718
00:38:57,440 --> 00:38:59,760
Und mir denke, na ja, ist ja 
dependency Injection, kann ja 

719
00:38:59,760 --> 00:39:04,560
von außen alles vorgeben, ja und
nein, weil das schon wieder n 

720
00:39:04,560 --> 00:39:07,560
Anzeichen ist, dass es denn doch
an der Architektur, an der ein 

721
00:39:07,560 --> 00:39:10,560
oder anderen Stelle klemmt, 
zumindest aus unserer Sicht. 

722
00:39:10,560 --> 00:39:14,400
Wir lassen uns da auch gerne 
belehren oder korrigieren, wie 

723
00:39:14,400 --> 00:39:19,200
sagt man, weil das zeigt, dass 
es schon wieder unnötig 

724
00:39:19,200 --> 00:39:21,520
kompliziert wird, dass man 
einfach denn zu viel 

725
00:39:21,680 --> 00:39:24,240
Abhängigkeiten hat und da mal 
refectern sollte. 

726
00:39:24,640 --> 00:39:28,400
Ja, also klar ist zum Beispiel, 
wenn wir über Single über Single

727
00:39:28,400 --> 00:39:31,520
Responsibility gesprochen haben,
könnte es vielleicht sein, dass 

728
00:39:31,520 --> 00:39:37,440
dieser Service oder diese klasse
oder ne wo halt eben 567 

729
00:39:37,440 --> 00:39:40,160
Injections stattgefunden haben. 
Vielleicht macht diese Klasse 

730
00:39:40,160 --> 00:39:43,280
dann doch zu viel, man weiß es 
nicht, es könnte sein. 

731
00:39:44,640 --> 00:39:47,560
Und es ist n valider 
Anwendungsfall, weil ich hatte 

732
00:39:47,560 --> 00:39:50,000
ja Angular erwähnt und da haben 
wir auch selbst die Erfahrung 

733
00:39:50,000 --> 00:39:53,600
gemacht, dass du an den Punkt 
kommst, wo du auf einmal so 56 

734
00:39:53,600 --> 00:39:55,840
Angular Services drin hast und 
dir denkst. 

735
00:39:56,560 --> 00:40:00,480
Weiß nicht, ich glaub das artet 
gerade n bisschen aus. 

736
00:40:00,640 --> 00:40:02,400
Lass mal refact. 
Dann so ne. 

737
00:40:02,560 --> 00:40:04,960
Na du kommst halt schnell dahin,
dass du sagst, du brauchst den 

738
00:40:04,960 --> 00:40:07,520
Service noch. 
OK, ja dann komm injected den 

739
00:40:07,760 --> 00:40:11,000
Service, das ist genau wie bei 
Single ne, weil du hast halt 

740
00:40:11,000 --> 00:40:14,640
diesen Punkt wo es sehr easy ist
den dann reingeben zu können, ne

741
00:40:14,640 --> 00:40:18,560
gerade gerade. 
Mit Frameworks wie Angula, wenn 

742
00:40:18,800 --> 00:40:21,440
du den einfach in Konstruktor 
schreibst sozusagen. 

743
00:40:21,520 --> 00:40:24,080
Das Beste ist ja, wenn du 
irgendwann n Service hast. 

744
00:40:24,080 --> 00:40:25,440
Ja, also sagen wir mal Service 
1. 

745
00:40:25,440 --> 00:40:31,120
Der Injected Service 2 und 3 und
Service 2 Injected aber auch 

746
00:40:31,120 --> 00:40:34,320
noch mal Service 3. 
Also weißt du also du hast dann 

747
00:40:34,360 --> 00:40:37,600
du hast dann quasi wo du dir 
denkst OK muss jetzt bis auf 

748
00:40:37,600 --> 00:40:40,480
Service 3 selber also bis auf 
deinen Service der überall 

749
00:40:40,480 --> 00:40:42,600
injected und muss der überall 
injected werden also. 

750
00:40:43,760 --> 00:40:46,240
Ne, da kann man sich dann 
vielleicht noch mal überlegen. 

751
00:40:46,240 --> 00:40:48,000
OK, hab ich hier nicht 
vielleicht n bisschen 

752
00:40:48,000 --> 00:40:50,480
übertrieben? 
Das ist nämlich auch wieder so n

753
00:40:50,480 --> 00:40:55,320
Ding zirkuläre Abhängigkeiten 
gerade können halt auftreten, 

754
00:40:55,320 --> 00:40:58,480
gerade wenn du wirklich 
exorbitant viel dependency 

755
00:40:58,480 --> 00:41:00,400
Injection machst und vielleicht 
irgendwann den Überblick 

756
00:41:00,400 --> 00:41:03,680
verlierst und nicht mehr weißt 
wo gehen denn die die Penancies 

757
00:41:03,680 --> 00:41:06,320
hin, weil wenn du jetzt zum 
Beispiel sagst ne, also das ist 

758
00:41:06,320 --> 00:41:09,080
relativ. 
Schnell erklärt ne zirkuläre 

759
00:41:09,080 --> 00:41:11,840
Abhängigkeit ist wenn du sagst 
du kannst Service A nur mit 

760
00:41:11,840 --> 00:41:14,560
Service B nutzen und Service B 
nur mit Service A nutzen. 

761
00:41:15,040 --> 00:41:18,000
So wenn du jetzt aber sagst OK 
das ist Henne ei Problem, was 

762
00:41:18,560 --> 00:41:21,600
kannst du jetzt nutzen ohne das 
andere ne also es wird halt so 

763
00:41:21,600 --> 00:41:24,240
nicht funktionieren. 
Und wer jetzt sagt, das klingt 

764
00:41:24,240 --> 00:41:26,520
abwegig, nein, sowas kann sehr 
schnell passieren. 

765
00:41:28,320 --> 00:41:30,040
Klar, nicht. 
Nicht in konstruierten 

766
00:41:30,040 --> 00:41:31,720
Beispielen. 
Das wird wahrscheinlich nicht so

767
00:41:31,720 --> 00:41:34,320
einfach sein, aber. 
Ja, es ist halt. 

768
00:41:34,440 --> 00:41:36,680
Es ist leider möglich. 
Genau. 

769
00:41:36,680 --> 00:41:39,120
Also man kann sagen, dass es 
halt auch klare Regeln geben 

770
00:41:39,120 --> 00:41:41,040
sollte, ne, dass man da einfach 
auch wirklich n Überblick 

771
00:41:41,040 --> 00:41:43,200
behält, definitiv. 
Gerade auch wenn wir jetzt zum 

772
00:41:43,200 --> 00:41:45,640
Beispiel über das gesprochen 
haben, wenn man zum Beispiel 

773
00:41:45,640 --> 00:41:47,720
sagt, OK, du kannst vielleicht 
irgendwie ne Constructor 

774
00:41:47,720 --> 00:41:50,720
injection oder ne Setter 
Injection machen und man dann 

775
00:41:50,720 --> 00:41:53,680
vielleicht sagt, EY ne, also 
sagen wir mal, du hast irgendwie

776
00:41:53,680 --> 00:41:56,880
n Team. 
Der die eine Person aus dem Team

777
00:41:56,880 --> 00:41:59,040
sagt sich OK, ich mach aber 
jetzt immer Constructor 

778
00:41:59,040 --> 00:42:00,720
Injection, die andere macht 
immer Setter Injection. 

779
00:42:00,720 --> 00:42:03,360
Am Ende braucht man aber das ein
oder das andere vielleicht gar 

780
00:42:03,360 --> 00:42:05,320
nicht zwingend, weil das 
vielleicht zum Beispiel die 

781
00:42:05,320 --> 00:42:08,680
Setter Injection vielleicht auch
mit der Constructor Injection zu

782
00:42:08,680 --> 00:42:11,040
lösen wäre, dann sollte man sich
vielleicht auch auf ne 

783
00:42:11,040 --> 00:42:15,240
Einheitlichkeit einigen um halt 
auch eben auch diese diesen ich 

784
00:42:15,240 --> 00:42:19,840
sag mal diese diese das was wir 
vorhin als Vorteil angesprochen 

785
00:42:19,840 --> 00:42:23,520
haben, dass man halt ne. 
Übersichtlichkeit schafft von 

786
00:42:23,520 --> 00:42:26,120
den Dependencies her. 
Wenn du aber dann zum Beispiel 

787
00:42:26,120 --> 00:42:28,320
immer wieder dies und das und 
jenes verwendest, verschiedene 

788
00:42:28,320 --> 00:42:32,560
Möglichkeiten, wenn es sein 
muss, klare Sache, aber wenn es 

789
00:42:32,560 --> 00:42:34,160
nicht unbedingt sein muss, dann 
vielleicht so eine 

790
00:42:34,160 --> 00:42:37,120
Einheitlichkeit haben, damit man
auch sich darauf verlassen kann,

791
00:42:37,120 --> 00:42:39,760
dass da, wo man hinguckt, auch, 
dass man da halt eben auch denn 

792
00:42:39,760 --> 00:42:42,440
die Dependencies eben erspähen 
kann, sozusagen. 

793
00:42:43,040 --> 00:42:47,600
Ja, ist ein sehr guter Punkt und
wo wir auch bei Interfaces sind.

794
00:42:49,440 --> 00:42:52,720
Wenn man im Test oder beim 
Testen merkt, OK, ich habe zwar 

795
00:42:52,720 --> 00:42:55,280
den Vorteil von Dependency 
Injection und kann jetzt von 

796
00:42:55,280 --> 00:42:58,080
außen alles implementieren und 
vorgeben, ich kann zum Beispiel 

797
00:42:58,080 --> 00:43:00,520
die Interfaces implementieren, 
die du gerade genannt hattest. 

798
00:43:00,520 --> 00:43:06,800
Ja, wenn ich aber merke, es ist 
unfassbar aufwendig, irgendwas 

799
00:43:06,800 --> 00:43:10,120
zu instanziieren, weil ich halt 
erstmal 56 Klassen vorher 

800
00:43:10,120 --> 00:43:13,680
implementieren muss, ja, weil du
alles so ineinander, die 

801
00:43:14,080 --> 00:43:17,840
Injektest sozusagen. 
Auch schwierig. 

802
00:43:17,840 --> 00:43:19,560
Und dann wird es auch 
unübersichtlich. 

803
00:43:19,560 --> 00:43:21,840
Also das ist dann auch so ein 
Warnzeichen, einfach. 

804
00:43:22,160 --> 00:43:27,280
Ja, auf jeden Fall. 
Also angenommen du hast Service 

805
00:43:27,280 --> 00:43:30,560
A brauch Service B also möchtest
du Service B Reingeben aber um 

806
00:43:30,560 --> 00:43:34,280
Service B Instanziieren zu 
können brauchst du Service C und

807
00:43:34,280 --> 00:43:37,200
so weiter dann hast du halt eine
Riesenkette an Code um überhaupt

808
00:43:37,200 --> 00:43:40,160
erstmal alle Objekte zu 
instanziieren und dann merkst du

809
00:43:40,160 --> 00:43:42,160
halt auch irgendwann so. 
Vielleicht habe ich es. 

810
00:43:42,160 --> 00:43:45,160
Übertrieben? 
Ich habe es völlig übertrieben. 

811
00:43:47,520 --> 00:43:50,240
Ja, aber zum Beispiel das was, 
was ich vorhin meinte. 

812
00:43:50,240 --> 00:43:54,880
Es ist, wenn wenn du quasi n 
sagst OK ich ich injekte nicht 

813
00:43:54,880 --> 00:43:56,760
einfach nur ne Klasse, sondern 
ich injekte zum Beispiel also 

814
00:43:56,760 --> 00:43:59,600
sagen, wenn wir bei Payment sind
ne es ist natürlich nicht 

815
00:43:59,600 --> 00:44:02,480
schlecht zu sagen OK du hast n 
du indizierst nicht einfach nur 

816
00:44:02,480 --> 00:44:04,520
n Payment Service und dieser 
Payment Service sagt 

817
00:44:04,520 --> 00:44:10,320
beispielsweise OK pay with 
Paypal pay with ne Visa oder was

818
00:44:10,320 --> 00:44:13,080
auch immer, sondern du sagst 
dann am Ende wirklich irgendwie,

819
00:44:13,080 --> 00:44:18,560
dass du n Interface reingibst 
und sagst ne, das ist NI payment

820
00:44:18,560 --> 00:44:22,800
Service beispielsweise und dann 
kannst du halt zum 

821
00:44:22,800 --> 00:44:25,440
entsprechenden Zeitpunkt halt 
auch oder wie du auch meintest, 

822
00:44:25,440 --> 00:44:27,360
vielleicht auch zur Laufzeit, 
sogar je nachdem wann du das 

823
00:44:27,360 --> 00:44:31,120
Objekt konstruierst eine 
entsprechende Injection mit 

824
00:44:31,120 --> 00:44:33,600
Reingeben oder eine 
entsprechende Dependency 

825
00:44:33,600 --> 00:44:35,520
Injection so. 
Rum, ja. 

826
00:44:35,920 --> 00:44:38,000
Genau. 
Und dann kannst du halt eben aus

827
00:44:38,080 --> 00:44:43,840
diesen Interfaces verschiedene, 
ja ich sag mal. 

828
00:44:44,960 --> 00:44:48,280
Implementierungen mitgeben so ne
oder jetzt zum Beispiel auch das

829
00:44:48,280 --> 00:44:50,800
Beispiel, was ich vorhin meinte 
mit dem mit dem, mit dem Testen,

830
00:44:51,200 --> 00:44:55,200
dass du dann zum Beispiel auch 
ein ein Interface faken kannst 

831
00:44:55,360 --> 00:44:57,880
oder ein Implementierung des 
Interfaces für das Repository. 

832
00:44:57,880 --> 00:45:00,760
Fake kannst so ja, ja, das kann 
zum Beispiel auch helfen, ja, 

833
00:45:00,760 --> 00:45:03,960
ich. 
Würde sagen, dann haben wir das 

834
00:45:03,960 --> 00:45:05,920
Thema eigentlich auch wirklich 
gut besprochen. 

835
00:45:05,920 --> 00:45:07,520
Wir sind auch wieder 
fortgeschritten in einer Zeit 

836
00:45:07,520 --> 00:45:09,600
auch so ein Standardsatz, weil 
wir immer mit ein bisschen 

837
00:45:09,600 --> 00:45:12,920
verquatschen. 
Wir sollten aber mal im Vorfeld 

838
00:45:12,920 --> 00:45:15,440
immer Wetten abschließen, wie 
lange die Folge dauert. 

839
00:45:16,080 --> 00:45:19,200
Ja, ich glaub, das kriegen wir, 
das werden wir nie treffen, aber

840
00:45:19,200 --> 00:45:21,440
trotzdem die Anmerkung, Liebe 
zuhören, Liebe zuhören. 

841
00:45:21,920 --> 00:45:25,040
Falls du noch fragen zu dem 
Thema hast, Anmerkung oder Dir 

842
00:45:25,040 --> 00:45:28,480
sagst so hey wär cool wenn ihr 
auch mal Beispiele gebt, so als 

843
00:45:28,480 --> 00:45:31,600
Code, dass wir da irgendwie mal 
Content zu machen, lass es uns 

844
00:45:31,600 --> 00:45:32,960
gerne wissen. 
Auf jeden Fall. 

845
00:45:33,280 --> 00:45:36,480
Und ansonsten, wie gesagt also 
die Links dann auch dazu ne, 

846
00:45:36,480 --> 00:45:38,760
also du kannst uns schreiben auf
einem Plattformen, da gibt es 

847
00:45:38,760 --> 00:45:41,280
die Links natürlich wie gehabt 
in den Shownotes guckst du 

848
00:45:41,280 --> 00:45:44,120
einfach mal rein und wenn du 
jetzt zum Beispiel auch ein 

849
00:45:44,120 --> 00:45:45,880
Thema hast, wie zum Beispiel 
dieses Thema, das war ja auch 

850
00:45:45,880 --> 00:45:50,200
ein Wunsch, ne, dann schreib uns
auch gerne auf der Plattform 

851
00:45:50,200 --> 00:45:52,160
deiner Wahl. 
Ganz genau. 

852
00:45:54,080 --> 00:45:57,600
Ja, was was haben wir noch? 
Wichtig ist natürlich immer, und

853
00:45:57,600 --> 00:46:01,040
das müssen wir sagen, ja, wir 
kommen nicht drum herum, Regie 

854
00:46:01,040 --> 00:46:06,520
sagt, Wir müssen das Sagen und. 
Wenn dir der Podcast gefällt, 

855
00:46:06,520 --> 00:46:08,440
dann nimmt viel ihn auf jeden 
Fall weiter und lass ne 

856
00:46:08,440 --> 00:46:10,880
Bewertung da. 
Und und das ist natürlich 

857
00:46:10,880 --> 00:46:13,120
wichtig, die haben wir ja jetzt 
gar nicht vor allzu langer Zeit 

858
00:46:13,120 --> 00:46:15,680
mitgekriegt. 
Lass mal n Abo da und Aktivier 

859
00:46:15,680 --> 00:46:18,640
das Glöckchen, weil dann 
verpasst du keine neue Folge, 

860
00:46:18,720 --> 00:46:23,120
das ist ganz ganz wichtig, Oh 
Yes, ansonsten Tino, vielen Dank

861
00:46:23,440 --> 00:46:26,440
für das tolle Gespräch über gar 
nicht die Penancy Injection, ich

862
00:46:26,440 --> 00:46:28,800
hätt nicht gedacht, dass wir so 
lange darüber reden können, aber

863
00:46:28,800 --> 00:46:30,880
wir haben es geschafft 
ansonsten. 

864
00:46:30,880 --> 00:46:33,360
Ist n geiles Thema. 
Ist es auch. 

865
00:46:33,680 --> 00:46:36,000
Ansonsten wünsche ich dir Tino 
und auch dir Liebe zu lieber 

866
00:46:36,000 --> 00:46:39,200
zuhören, einen tollen Tag, ne 
tolle Zeit bis zur nächsten 

867
00:46:39,200 --> 00:46:41,840
Folge deine Codingbuddy 
gemeinsam besser.

