Latest / Coding Buddies | Tech & Dev-Mindset / #133 Design Patterns 6 - Was nicht passt wird passend gemacht
Transcript
- 0:00Ich war früher immer Team Nintendo, da mach ich mal Team
- 0:03playstation. Jetzt bin ich wieder Team
- 0:05Nintendo. Nee nee, Xbox Xbox Arena nicht
- 0:08drüber, das ist so dein Ding. Coding Buddies Dein Podcast rund
- 0:13um Softwareentwicklung und aktueller Tech News Herzlich
- 0:16Willkommen Halli Hallo und herzlich
- 0:30Willkommen zur neuen Folge des Coding Buddies Podcast schön,
- 0:33dass du wieder eingeschaltet hast.
- 0:34Liebe zuhören, liebe Zuhörer. Und deine Gastgeber, wie immer
- 0:39meine Wenigkeit, der Dino und der fantastische Fabi Fabi, was
- 0:44geht ab? Ich begrüße Dich Keep Coding
- 0:48Dino ah nee, keep podcasting was.
- 0:52Ja, das stimmt. Ich wollt einfach mal unsere.
- 0:56Coole, ausgedachte Begrüßung im Podcast aufnehmen.
- 1:00Ja, die verbreitet sich ja schon rasant auf Twitter.
- 1:03Ja, ja, auf jeden Fall. Man munkelt, dass Leute sich
- 1:06schon erkennen auf der Straße wegen Keep Coding.
- 1:10Das Problem ist, im Podcast funktioniert das Handzeichen
- 1:12nicht so, also Liebe zuhören, Liebe zuhören, du musst dir so
- 1:14ein cooles Handzeichen vorstellen.
- 1:16Stell dir einfach ein cooles Handzeichen vor.
- 1:18Das ist gut, das ist gut, weil selbst wenn es nicht cool wäre,
- 1:21wäre es jetzt cool. Ganz genau.
- 1:24Ganz genau. Und Thilo weiß das genau, ganz
- 1:27kurz, was ich irgendwie dich fragen wollte, weil da hab ich
- 1:30letztens ganz kurz off topic, hab ich letztens gesehen, so n
- 1:34so n Ausschnitt davon und ich wollte mich interessiert das
- 1:37wirklich ne, kannst du dich noch?
- 1:39Es geht um Serien aus der Kindheit ne kannst du dich noch
- 1:42dran erinnern an eine bestimmte Serie die heißt extreme
- 1:45Dinosaurs. Na klar, ich, also ich hätt.
- 1:49Mich von alleine nie wieder dran erinnert, wenn ich nicht
- 1:51irgendwie n kleinen Ausschnitt davon gesehen hätte, dann dachte
- 1:53ich mir so. Krass.
- 1:55Ja, war. Heftig, oder?
- 1:57Also warst du ne krasse Serie damals, ey, also muss ich sagen,
- 2:01also ich weiß nicht, wenn sich da noch jemand dran erinnert,
- 2:04sag gerne mal Bescheid, mir ist es komplett entfallen.
- 2:08Da gab es so mega viele coole Serien auch hier dieses Biker
- 2:11meist from Mars und so, das war einfach krass.
- 2:15Oder Gargolts oder so. Ja.
- 2:17Das das stimmt glaub ich ne ne Stufe obwohl man weiß das immer
- 2:21nicht so in meinem Kopf ist das gerade so n bisschen später,
- 2:23aber wer weiß, vielleicht ist auch Gargolts das Älteste
- 2:25gewesen, aber ich glaube, dass es so n bisschen später gewesen,
- 2:29aber es war krass. Keine Ahnung, ich war heftig,
- 2:31aber ich dachte mir so, ich hab mich gefragt, ob nur ich das
- 2:34kenne oder du auch, aber bin ich ja beruhigt.
- 2:38Ist ja auch so n bisschen unsere Zeit, ne, also das war ja auch
- 2:41krass, wenn du früher dann einfach so vorm Fernseher saß
- 2:44und dann kam ne neue Folge und du konntest hier gucken, also
- 2:47das war schon, das war schon krass hier, nicht Netflix hier
- 2:50on demand. Ne, ja, das war krass.
- 2:53Also ich hab mich auf jeden Fall auch immer zum Beispiel
- 2:55irgendwie was was darkwin Duck oder so fand ich richtig krass.
- 2:58Also damals fand ich richtig richtig krass und da hatte ich
- 3:01so ein so ne lieblingsfolge, die hab ich irgendwo mal geguckt und
- 3:04ich hab die nie wieder geschaut. Und die kam auch nie wieder.
- 3:08Also es ist deine Lieblingsfolge, weil du sie nur
- 3:09einmal gesehen hast. Na, die war so heftig krass,
- 3:11weil da war der Darkwin. So wurde gesplittet in so guter
- 3:14Darkwin Dark und Böser ne gute böse doch genau, und dann war
- 3:18der irgendwie, also es war so nur die Essenz des guten und des
- 3:20Bösen oder so und ich fand die Folge einfach so heftig, voll
- 3:23krass. Dann würde ich sagen, dann
- 3:26nutzen wir das gleich hier und starten Aufruf.
- 3:28Also falls jemand weiß welche Folge das ist, schreibt uns
- 3:32damit Fabi seine Lieblingsfolge zum zweiten Mal gucken kann.
- 3:37Ich wette, ich wette, die Folge ist einfach.
- 3:40Die Cover findet bei Leasy, aber ich hab mich einfach nie drum
- 3:42gekümmert und ich glaub es ist so n kleiner wie 30 folgen oder
- 3:45so. Also früher dachte ich immer es
- 3:46gibt von jeder Serie 1000 folgen aber es sind halt nur keine
- 3:50Ahnung. Bestimmt nur 30.
- 3:51Ich hab keine Ahnung. Ich fand Darkwin Dagmar
- 3:53unglaublich schnelllebig, also super schnell geschnitten, also
- 3:57dass Kinder da wirklich wahnsinnig geworden sind bei
- 3:59also da geht richtig die Post ab, immer ne also um das
- 4:02überhaupt verarbeiten zu. Können ist schon hart also doch
- 4:06guck es dir mal aus heutiger Sicht an.
- 4:08Ja, ich weiß, dass du mal da drauf, wie schnelllebig das ist,
- 4:10wie schnell geschnitten alles ist.
- 4:12Es geht auch einfach total krass, es geht einem auch voll
- 4:14auf den Sack, ich fand einfach nur Grad hier, da geht die Post
- 4:17ab find ich gut. Da merkt man mal, du bist n
- 4:19bisschen älter geworden, wenn man sagt.
- 4:21Es geht die Post ab, da geht die Post ab.
- 4:25Ja, ja gut, aber ich find das kann man immer noch sagen, das
- 4:27ist völlig in Ordnung so Fabi bevor wir jetzt reinstarten ich
- 4:32würd mal ganz kurz von Duck wie Duck weggehen und noch mal ganz
- 4:34kurz n Aufruf starten, Liebe zuhören Liebe zuhören falls du
- 4:37dich nicht nur für Cartoons von früher interessierst, sondern
- 4:40auch für unsere Codingthemen und der Podcast dir gefällt.
- 4:43Lass doch gerne mal n Abo da und auch gerne ne Bewertung.
- 4:46Das würde uns mega unterstützen. Deswegen hier ganz kurz deren
- 4:49Aufruf und wir haben das Glöckchen ja vor n paar Wochen
- 4:52entdeckt. Drück da mal drauf, dann wirst
- 4:55du auch immer benachrichtigt, wenn ne neue Folge kommt.
- 4:57Ich mein Donnerstag 18:00 Uhr ist klar, aber ne
- 5:00Benachrichtigung ist ja trotzdem nicht schlecht und deswegen
- 5:03vielen Dank dafür schon mal. Wochen, Monate, pipapo.
- 5:06Man weiß es nicht mehr. Ja, es ist es ist glaube ich
- 5:09schon ne Weile her, dass wir sie entdeckt haben, aber ich find's
- 5:11halt immer noch krass, definitiv und genau fabi, wir haben ein
- 5:16ganz cooles Thema mitgebracht heute und zwar machen wir heute
- 5:18mit unserer Design Pattern Folge weiter nicht Reihe.
- 5:21Es ist nicht nur ne Folge, es ist sogar ne ganze Reihe und
- 5:23wir. Mach ne neue Folge, so ist es
- 5:25korrekt und ich möchte das ganze Mal einleiten.
- 5:30Bitte mit einer ganz klassischen Frage und zwar warst du schon
- 5:36mal im Urlaub im Ausland und dachtest dir jetzt mein Handy
- 5:41laden, das wär fantastisch jetzt nur noch ne Steckdose finden,
- 5:45das wär klasse und dann geht es los und dann findest du sie
- 5:49möchtest dein Netzteil reinstecken und denkst dir no.
- 5:53Das sieht irgendwie anders aus. Das funktioniert nicht.
- 5:57Was ist da los? Wär das jetzt blöd, wenn ich
- 5:59sagen würde, nee kenn ich nicht, fahr ich nie.
- 6:02Ja dann werd ich von meinen Geschichten erzählen, aber ich
- 6:04bin mir eigentlich ziemlich sicher, dass du das schon mal
- 6:06erlebt hast. Ja, auf jeden Fall, ich glaub
- 6:07das erste Mal hab ich das sogar damals so in der fünften Klasse,
- 6:10da haben wir so ne so ne Woche irgendwie in London gemacht,
- 6:13also keine Ahnung also es ist schon n bisschen länger her und
- 6:15da bin ich dann nach London und dacht mir so was zur Hölle ist
- 6:19mit diesen Steckern hier los, also mit den Steckdosen.
- 6:22Das geht ja gar nicht so und ich glaub keine Ahnung.
- 6:25Also meine Mutter hat immer an alles gedacht, aber ich glaub
- 6:28ich hatte sowas nicht mit. Also ich konnte da quasi ich
- 6:32musste was von wem anders nehmen, sagen wir mal so, weil
- 6:35hat nicht reingepasst, ne. Und weil du meintest, deine
- 6:39Mutti hat an alles gedacht, dann denk ich mal, wird das nämlich
- 6:41genau unser Thema heute sein, an was sie gedacht hat.
- 6:44Und zwar gibt es ja so schöne Reiseadapter.
- 6:49Für Steckdosen in allen Formaten.
- 6:51Dann hast du die komischsten Formen und denkst dir, wo gibt
- 6:54es Steckdosen die sowas benötigen.
- 6:56Aber ja, es gibt sie und der Adapter erfolgt oder bezweckt im
- 7:02Prinzip, dass du dann ganz normal deine Netzteile verwenden
- 7:05kannst und so tun kannst, als wenn es eine Steckdose zu Hause
- 7:08wär, weil du einfach es schaffst diese nicht passenden Stecker,
- 7:13also Steckdose und Stecker, die Formate.
- 7:16Quasi kompatibel zu machen mit Hilfe eines Adapters und genau
- 7:21das im Prinzip auf die Software gemünzt, ist unser heutiges
- 7:25Thema, denn wir möchten heute mal über das Adapter Pattern
- 7:28sprechen und das Ziel soll sein zu verstehen, wie es hilft,
- 7:32dieses Pattern diesen Adapter zu verwenden, um Code einerseits
- 7:36wiederverwendbar zu machen, wie zum Beispiel jetzt die den
- 7:40Stecker, den wir gerade besprochen haben und wie man
- 7:42damit auch Systeme kompatibel machen kann.
- 7:45Hast du Bock drauf oder oder oder muss ich mir jetzt was
- 7:48Neues ausdenken? Anderes Thema.
- 7:50Lass mal über Duck and Duck reden machen.
- 7:53Wir, deine Lieblingsfolge können wir vielleicht am Ende, wenn
- 7:56noch Zeit ist, machen wir das am Ende ne, aber wir werden.
- 7:58Keine Zeit haben? Nein, da war Pass auf, den finde
- 8:01ich gut. Wir hatten ja in unserer Reihe
- 8:04schon bisher erzeuger, Muster oder ne creational Pattern
- 8:08gehabt, die sind jetzt eigentlich durch und jetzt
- 8:10kommen wir zu sogenannten. Fructural Patterns oder
- 8:14strukturellen Design Patterns ne und Adapter Pattern ist halt ein
- 8:19so ein strukturelles Design Pattern ne und im Endeffekt ist
- 8:24es ja genau das, was du ja auch schon jetzt so angesprochen
- 8:27hattest. Ne, du willst irgendwie sag ich
- 8:30mal 2 Systeme oder 2 Klassen wie auch immer miteinander
- 8:33kombinieren, ne die aber eigentlich gar nicht füreinander
- 8:36gemacht sind und im Endeffekt. Kann man sich bei so einem
- 8:40Adapter Pattern das dann so vorstellen, dass man einfach
- 8:43sagt, ja OK, du hast halt irgendwie nen Client, der
- 8:46irgendwas quasi aufrufen möchte, zum Beispiel ne Funktion in
- 8:50deiner Software? Und wenn diese Funktion, die der
- 8:55Client eigentlich aufrufen möchte, aber nicht zu dem passt
- 8:58was er erwarten würde, sozusagen, dann nimm halt
- 9:01einfach ne Schnittstelle sozusagen, die das Ganze
- 9:03anpasst, so dass eben. Ne der Client damit zufrieden
- 9:07ist. Ich finde es ganz cool, wenn
- 9:08manche auch von einer Art Übersetzer sprechen, weil das in
- 9:11vielen Fällen auch hilft, das Ganze zu verstehen.
- 9:14Ne, also wirklich, ich habe 2 Sachen, die einfach nicht
- 9:18kompatibel miteinander sind, also in der Software ganz oft in
- 9:21Interfaces und ich habe jetzt einen Übersetzer und zwar den
- 9:25Adapter, der von Interface A zu Interface b übersetzt im Prinzip
- 9:30und. N typisches Szenario wo man
- 9:35sowas halt verwendet ist ja dann auch einfach Legacy Code, weil
- 9:38ich hatte ja vorhin schon gesagt, wie man Code
- 9:40wiederverwendbar macht im Sinne von alten Code halt immer noch
- 9:44verwenden kann oder wieder integrieren kann und oder auch
- 9:48so Third partysachen ja, also die jetzt gar nicht so wirklich
- 9:50zu deinem System gehören, also um mal so n bisschen
- 9:53vorwegzugreifen warum das ganze? Also es ist nicht selten, dass
- 9:57man diesen Einsatz hat, sozusagen ne also
- 10:00beispielsweise. Ich hab n System und das
- 10:04erneuere ich. Aber ich muss halt noch gewisse
- 10:07Altsysteme anbinden. Ja dann möchte ich natürlich
- 10:10jetzt nicht irgendwie sagen, nee, dann bleibe ich halt auf
- 10:13den alten Schnittstellen. Ja weil das ist das Altsystem
- 10:15und das brauchen wir noch, währenddessen meine
- 10:17Neuentwicklung eigentlich ne ganz andere Richtung geht, dann
- 10:19gehe ich ja eher den Weg zu sagen ich gehe den neuen Weg,
- 10:24aber ich muss irgendwie gewährleisten, dass dieser neue
- 10:26Weg noch mit dem alten System kommunizieren kann und das wäre
- 10:29so n klassischer Anwendungsfall zu sagen.
- 10:32Dann habe ich so n Adapter dazwischen, der solange ich die
- 10:34Altsysteme brauche, halt noch dafür sorgt, dass die
- 10:37Kommunikation noch korrekt ist. Ja, ja, ich bin irgendwie, weil
- 10:41du es gerade sagst. Na Altsysteme kann man sich
- 10:43natürlich hinstellen und sagen, ja, ja, altsysteme mach die doch
- 10:45halt neu, ich glaube ich bin auch ne Zeit lang so, auch nach
- 10:50dem Studium oder frisch aus dem Studium raus war ich so n
- 10:53bisschen blauäugig und dachte mir so na ja guck mal, du hast
- 10:55jetzt hier du du kannst irgendwie das ne und dies und
- 10:58jenes, so kennt man ja dann, dann nimmt man das ja auch ne.
- 11:01Und gerade bei so altsystem ne, da hab ich mich dann früher auch
- 11:07immer hingestellt, so n bisschen.
- 11:08Also ich übertreib jetzt ne, weil so dass man so sagt, so ja
- 11:10dann mach die halt neu, das ist doch alles, das ist doch alles
- 11:14alt, das ist doch doch Quatsch, das ist doch voll überholt so ne
- 11:17man muss sich aber dann noch wieder im Klaren darüber sein,
- 11:20dass Altsysteme in der Arbeitswelt halt leider Gottes
- 11:24eben einfach da sind, die kannst du nicht einfach wegzaubern oder
- 11:27wegschnipsen, das funktioniert nicht, sondern die sind da und.
- 11:31Sie neu zu machen, ist manchmal auch nicht wirklich praktikabel.
- 11:34Also es ist ist einfach manchmal.
- 11:36Es wär viel zu viel Aufwand und klar, in einer schönen Welt kann
- 11:40man das auf jeden Fall machen, aber es geht halt nicht immer
- 11:43und deswegen ist es halt n absolut valides Beispiel zu
- 11:46sagen, ey Du musst Legacy Code oder Legacy Systeme anbinden und
- 11:50das ist halt kacke und ich wollt es früher auch.
- 11:52Erst mal ne. Zeit lang nicht wahrhaben, aber
- 11:55aber du hast es halt ne und das ist.
- 11:58Das ist halt blöd, oder? Zum Beispiel Diese Third Party
- 12:00Libraries. Ich kann mich noch erinnern, ich
- 12:02hab das irgendwann im Studium ne wenn du irgendeine Lib benutzt
- 12:05wo du irgendein Output bekommst von irgendeiner ne von der lib
- 12:08wo du irgendwas aufrufst und dann hast du deine Datenstruktur
- 12:12aber irgendwie anders gebaut ne da ich mein das ist so n so n
- 12:15richtiger ich sag mal so n so n so n.
- 12:19Waffenstyle Adapter, dass du halt immer ernährst.
- 12:22Converter Weißt du den ich da gebaut hab, aber so mehr oder
- 12:25weniger, da muss ich mal dran denken, dass so das ist so die
- 12:28Vorstufe von einem Adapter, dass du sagst, OK ich konvertiere
- 12:31meine Daten von A nach b, damit es zusammenpasst.
- 12:35Ja, Waffensty ist natürlich unbegriff, also so auf gut Glück
- 12:40das Ganze gemacht, oder? Ja genau.
- 12:44Ja, ich mein, wenn man jetzt mal wirklich so softwarebeispiele
- 12:48nimmt, weil du meintest, so Altsysteme existieren da, es
- 12:51gibt keinen Weg drumrum. Es ist ja auch oft so, dass es
- 12:54ja nicht bewusst entschieden ist.
- 12:57Ja, wir behalten unser Altsystem, weil es n altsystem
- 12:59und es muss Altsysteme geben, oder wir können es nicht neu
- 13:02machen, weil wir keine Zeit haben.
- 13:04Ja, das sind so Aspekte, aber es gibt ja auch oft den Fall, dass
- 13:06du sagst, das Altsystem hat ne gewisse Lebensdauer.
- 13:11Ja, also beispielsweise alles, was so Richtung.
- 13:14Wir müssen das noch supporten an Altfunktionalitäten altsystemen,
- 13:19wenn es darum geht ne, dann ist das ja ne gewisse Lebensdauer
- 13:23und dann schreibst du das logischerweise nicht komplett
- 13:26neu, weil es soll ja wegfallen, aber du musst es halt noch
- 13:29meinetwegen ein 2 Jahre supporten und willst aber deine
- 13:32Neuentwicklung natürlich jetzt nicht anlehnen an die
- 13:36Altsysteme, wenn du weißt, nee wir müssen das umbauen, es geht
- 13:39besser. Und dann hast du genau diesen
- 13:41Fall, dass du dir denkst, ja, aber wir können sie nicht
- 13:44abschalten. Es muss halt noch gewährleistet
- 13:46sein, dass die funktionieren, funktionieren und dann ist so n
- 13:49patter halt denn einfach ne gute Lösung um mal n genaues Beispiel
- 13:53zu bringen. Ja, wir hatten ja schon ganz oft
- 13:56alles so Payment in in Richtung Payment Services mal gebracht,
- 14:00gerade in dieser Design Pattern Reihe, weil man ja viele Pattern
- 14:03daran auch gut erklären kann und jetzt?
- 14:08Hat man halt verschiedene Anbieter und so moderne Anbieter
- 14:13haben halt ne Schnittstelle, die vielleicht sehr generell ist.
- 14:17Ja also wenn ich jetzt an sowas wie paypal, Stripe, Klarna, was
- 14:21es da halt alles gibt, ne also so.
- 14:23Sag ich mal. Ich bezeichne sie mal als
- 14:25Moderne Payment Services, ne und dann sind die Schnittstellen
- 14:29wahrscheinlich sehr ähnlich aufgebaut beispielsweise und
- 14:33jetzt habe ich aber irgendwie alte Schnittstellen drin, die
- 14:36ganz andere Daten benötigen, mehr wissen, nicht ne
- 14:40Überweisung von früher weißt du oder oder Lastschrift oder oder
- 14:45oder weiß ich was ja also so einfach mal um so 2 Welten
- 14:48aufzuzeigen jetzt. Will ich das beides aber noch
- 14:52unterstützen, aber mein System geht hin Richtung sage ich mal
- 14:55diese digitalen Services ja und ich möchte die alten aber nicht
- 15:01verlieren und ich darf sie noch nicht rausnehmen und dann habe
- 15:04ich genau das Thema, dass ich ja in meiner Software aber an einem
- 15:07gewissen Punkt sagen möchte und jetzt bitte bezahlen.
- 15:11Macht die Überweisung, macht das Payment sozusagen ja und möchte
- 15:16ja im Idealfall die gleiche Schnittstelle ansprechen für
- 15:20alle Payment Services, also für alle Dienstleister die ich da
- 15:24drin habe. So wenn jetzt aber diese Daten
- 15:27die ich benötige komplett anders aussehen könnten von der
- 15:31Schnittstelle her ja, also ich habe jetzt eine Schnittstelle
- 15:34für eine Sofortüberweisung oder wie es hieß und eine
- 15:37Schnittstelle für Paypal meinetwegen und die sind.
- 15:41Unterschiedlich. Ich kann halt nicht sagen Pay
- 15:43und dann kann ich die Daten da einfach reingeben, die passen
- 15:46halt nicht zusammen, das Matcht nicht, ja dann ist halt so n
- 15:50Adapter da nicht schlecht zu sagen na gut, dann hab ich jetzt
- 15:52pro Payment Service ein Adapter der dafür sorgt, dass die Daten
- 15:56die aus meinem Client, also aus meiner Software selbst kommen,
- 16:00so aufbereitet werden, dass es quasi dem Interface schmeckt und
- 16:04die Bezahlung durchgeführt werden kann.
- 16:06Also der Unterschied könnte jetzt mir folgen.
- 16:08Der Unterschied könnte jetzt zum Beispiel bei den Daten, von
- 16:10denen du redest, sein, dass zum Beispiel bei paypal brauchst du
- 16:14beispielsweise ne e Mail Adresse sozusagen als Konto ID ne und
- 16:20bei deinem bei deiner Sofortüberweisung halt ne.
- 16:23Iban als IBAN Konto. Genau so und und in der Software
- 16:27hast du jetzt zum Beispiel ne Art nen Kunden ne nen Customer
- 16:31wo die Daten drin sind und rufst Pay auf.
- 16:33So aber Pay sagt jetzt keine Ahnung die und die Daten brauche
- 16:37ich und du musst jetzt aber gucken, dass du aber alle
- 16:39zufriedenstellen kannst und dann kannst du dafür halt nen Adapter
- 16:42nehmen um die richtigen Daten rauszuziehen und die
- 16:45entsprechende Pay aufzurufen oder n ganz ganz einfaches
- 16:49Beispiel und das kommt auch vor, dass die Schnittstelle.
- 16:53Also zum Beispiel bei so einer Third Party Library einfach die
- 16:56Funktion einfach unterschiedlich heißt.
- 16:58Ja. Ja, beispielsweise die eine
- 17:00heißt Pay und bei der anderen heißt es Make Payment oder jetzt
- 17:04mal so aus den Fingern gesaugt, aber dann hast du ja schon das
- 17:07Problem, welche Funktion ruf ich jetzt auf, ich will doch eine
- 17:10gemeinsame Schnittstelle aufrufen und dann könnte selbst
- 17:13der Adapter sowas einfaches sein wie ich implementiere n
- 17:17Interface was Pay hat. Und bei dem einen Adapter ruf
- 17:20ich make payment auf und bei dem anderen Pay irgendwas.
- 17:23Ja genau das genau. Also man, es ist ja im Endeffekt
- 17:26noch mal sowas wie ne Art Hülle drumherum, damit du sozusagen an
- 17:31dieser Hülle sozusagen ansetzen kannst und sagen kannst, OK, ich
- 17:34möchte sozusagen außerhalb dieser Hülle etwas aufrufen,
- 17:37sozusagen ne, also was, was der Client, den hatten wir vorhin
- 17:40angesprochen, dass er sieht ne und was dahinter passiert ist
- 17:43uns eigentlich egal. Die kleine, der kleine
- 17:46Unterschied, weil ich find da kann man relativ schnell an so n
- 17:48Interface denken, dass du sagst, ja gut, dann sag halt das
- 17:50implementierten Interface und das implementierten Interface.
- 17:53Der springende Punkt dabei ist die eine Seite, also du
- 17:56implementierst ja nicht alles, du kannst ja nicht sagen, OK,
- 17:58meine neue Klasse implementierten Interface mit
- 18:01Pay und ne sagen wir mal IBAN Sofortüberweisung.
- 18:06Macht dann halt eben dieses Pay und paypal macht halt das andere
- 18:10Pay, sondern ne wenn du beides implementierst kannst du das so
- 18:13machen. Ne dann hast du weiß nicht
- 18:14kannst auch ne Factory draufsetzen oder so weil wir bei
- 18:16ne bei Design Pattern sind aber das eine existiert ja schon, das
- 18:21heißt du kannst ja das du kannst es nicht anfassen, du kannst es
- 18:24nur verwenden und um es zu verwenden musst du was drumherum
- 18:27bauen damit es quasi genauso ne gleiche Funktion heißt das
- 18:30gleiche zurückkommt oder das sozusagen die Schnittstelle
- 18:33bedient die du brauchst so. Gutes Beispiel.
- 18:36Sehr gute Anmerkung. Was ich noch, was mir noch
- 18:38einfällt, weil ich find das ist so n geiles Beispiel auch wo wir
- 18:40von Legacy Systemen geredet haben so Real Life Beispiel
- 18:45Stell dir vor du sitzt im Auto hast vielleicht n älteres Auto
- 18:48und n aux Adapter drin jetzt nimmst du die neuen Handys hast
- 18:52n neues Handy, willst irgendwie Musik hören so da gibt es keine
- 18:55Klinke mehr du kannst keine Klinke mehr an deinen an die
- 18:57meisten Handys heute dran schließen ne so kannst Bluetooth
- 19:01aber dein Auto kann kein Bluetooth.
- 19:03Und dein Handy kann Bluetooth, aber dein Handy kann keine
- 19:05Klinke. Dein Auto kann klinke so ne
- 19:07blöd. Jetzt hast du genau diese 2
- 19:09Systeme, die nicht kompatibel miteinander sind, obwohl ja dein
- 19:13Auto sagen kann, ey, ich kann Musik abspielen und dein Handy
- 19:15sagt Hey und ich kann Musik geben, aber die Schnittstelle
- 19:19passt halt nicht. Ja und nun?
- 19:21Ja, genau, und dann wird ne, da gibt es halt diesen Adapter der
- 19:24dann sagt, OK, ich kann sozusagen ne den Bluetooth
- 19:27Adapter, also dieses Bluetooth Ding auf den auf die Klinke
- 19:30stecken und dann mich sozusagen mit dem Handy auf dieses
- 19:32Bluetooth Ding verbinden. Finden Musik, Hinsenden und das
- 19:35geht dann auf die Klinke. So ne Sachen gibt es ja ne,
- 19:37jetzt kann man sich natürlich hinstellen und sagt Bau dein
- 19:39Radio aus, gut geht bei manchen Autos nicht oder du hast
- 19:42vielleicht das Geld dafür nicht je nachdem oder du willst.
- 19:44Es einfach nicht machen, weil du faul bist.
- 19:46Aber aber das ist ja n super Beispiel.
- 19:49Genau weil jetzt hast du altsystem altes Radio.
- 19:51Klar kann ich jetzt das System ändern ja und neues Radio da
- 19:54einbauen aber es ist vielleicht auch nicht immer gewollt oder
- 19:56nicht immer möglich ja also genau gehen wir jetzt und dafür
- 19:59ist ja das Pattern da davon aus dieses Altsystem.
- 20:02Deswegen war der Einwand von dir auch noch mal richtig gut zu
- 20:04sagen, du musst jetzt mal davon ausgehen, dass du nichts an dem
- 20:08Altsystem machen kannst oder darfst.
- 20:10Genau ne, du versuchst nur ne Kompatibilität herzustellen und
- 20:14was an dem Beispiel auch noch richtig klasse ist, weil das
- 20:17kann man sich auch recht schnell jetzt vorstellen, dass n Adapter
- 20:20ja auf unterschiedliche Art und Weise implementiert werden kann
- 20:23und trotzdem das gleiche Ziel hat am Ende ja beispielsweise
- 20:27jetzt so n Bluetooth Adapter, der sagt ich empfange.
- 20:30Über Bluetooth die Musik vom Handy und gibt das über einen
- 20:34Klinkenausgang wieder in den Klinkeneingang vom Radio.
- 20:39Mhm. Adapter 1 Adapter 2 an einer
- 20:43anderen Stelle ist zu sagen, Na ja, das Problem liegt ja daran,
- 20:47dass n Handy keinen Klinkenausgang mehr hat, sondern
- 20:49nur noch USBC in den bei den modernen.
- 20:50Also gibt es ja auch Adapter, die sagen ich mach USBC und gibt
- 20:53dir nen Klinkenanschluss. Gibt es auch also auch.
- 20:58Es gibt ja einfach verschiedene, genau, also um einfach mal
- 21:01aufzuzeigen, es gibt unterschiedliche Adapter
- 21:04sozusagen, die das Gleiche lösen und das Münzt sich ja genauso
- 21:07auf die Softwareentwicklung. Es gibt ja auch verschiedene.
- 21:09Möglichkeiten, da können wir ja nachher drauf eingehen, wie man
- 21:12sowas softwaretechnisch umsetzen kann und in den ich find es halt
- 21:16immer gut, dass du an diesen realen Beispielen genau diese
- 21:18Abbilder siehst. Ja, es gibt mehrere
- 21:20Möglichkeiten, warum mach ich das und so weiter deswegen das
- 21:23ist n super Beispiel und ich glaube um das Ganze noch mehr zu
- 21:27verdeutlichen, wir haben. Bestimmt den ein oder anderen
- 21:32Gamer unter den Zuhörerinnen und Zuhörerinnen und das ist ein
- 21:35Thema, das kennt glaube ich jeder.
- 21:37Jetzt hast du unterschiedliche Controller in deiner Gaming
- 21:40Karriere ja schon gehabt, also zumindestens mir geht es so, ich
- 21:43war früher immer Team Nintendo, da mach ich mal Team playstation
- 21:47jetzt bin ich wieder Team Nintendo nee nee Xbox Xbox Arena
- 21:51nicht zu hören das ist so dein Ding.
- 21:57Auf jeden Fall. Also wir klammern Xbox Kurz aus.
- 22:02Du hast jetzt unterschiedliche Controller ne und n Spiel
- 22:06entwickelt ja aber zu sagen OK ich hab ne Schnittstelle ne also
- 22:09um mich spielen zu können um zum Beispiel n Charakter bewegen zu
- 22:13können brauch ich den und den die und die Taste und auf Taste
- 22:19was ist es dann bei Y glaub ich beim Xbox Controller ich bind
- 22:24dich wieder ein ich schließ dich jetzt nicht aus ne.
- 22:27Passiert halt irgendwie Aktion A im Spiel.
- 22:30Ja. So, jetzt hab ich aber n
- 22:32playstation Controller und wenn ich es jetzt nicht vergeige ich
- 22:34hoffe es ist richtig wär das ja bei mir die Dreiecks Taste.
- 22:37Kann ich nicht verifizieren, ist die Oma.
- 22:40Ja genau, ist gut und dem Spiel ist ja am Ende egal welcher
- 22:47Controller angeschlossen ist. Du brauchst aber halt dieses
- 22:50diesen Adapter, der sagt EY auf die Taste Jump zum Beispiel.
- 22:57Drückst du Dreieck? Nee, ich Dreieck und du was Y
- 23:01und jetzt können wir die ganze Sache ist ja unterschiedlich,
- 23:04wir können die ganze Sache ja noch weiter treiben und sagen
- 23:07ich weiß nicht, sowas gibt es doch, dass irgendwie leute, ich
- 23:11sag jetzt irgendwas ne so n Spiel mit.
- 23:14Weiß ich nicht. Mit mit einer Waschmaschine
- 23:15spielen oder so. Weißt du, dass die sozusagen
- 23:17Adapter haben, dass die sozusagen mit ne, also ich glaub
- 23:20nee keine Ahnung hier so Lenkrad weißt du so Ego Shooter mit dem
- 23:22Lenkrad spielen sowas ne passt eigentlich nicht zusammen, aber
- 23:25du hast n Adapter der im Endeffekt dafür sorgt, dass du
- 23:27es trotzdem spielen kannst. Bisschen schwierig, aber ne.
- 23:31Genau, weil du hast halt wie gesagt diese Schnittstelle, die
- 23:33implementiert werden muss, damit das Spiel weiß.
- 23:35Ich hab jetzt das Signal springen erhalten, genau so.
- 23:39Und was du dran mit einem Adapter anschließt ist ja denn
- 23:42dir überlassen sozusagen. Und wenn du da keine Ahnung auf
- 23:46der Waschmaschine Start drückst umzuspringen, dann ist das so,
- 23:51aber ich find daran kann man sich das ja auch gut vorstellen,
- 23:53weil jeder kennt ja diese unterschiedlichen Controller,
- 23:55aber du kannst halt mit einem Adapter dann in der Lage sein
- 23:58trotzdem das gleiche Spiel zu spielen am Ende richtig.
- 24:01Und das ist halt ne coole Sache. Klar, wenn jetzt n Knopf zu
- 24:04wenig da ist, ist was anderes, dann gibt dein Controller der
- 24:08das nicht her, sozusagen ne, aber solange du in der Lage bist
- 24:11diese Daten verknüpfen zu können, kannst du das Halt
- 24:14verwenden. Ja gut, wenn du n Steck, also n
- 24:16Stecker für die Steckdose nicht da reinsteckst, sondern in Sand,
- 24:19dann bringt es halt leider auch nichts, ne.
- 24:22Ganz genau. Das ist aber toll, das ist eben
- 24:26so. Und bei diesem ganzen Beispiel
- 24:28lass uns mal drüber quatschen, wie das denn jetzt eigentlich
- 24:30funktioniert. Also was denn so der Ablauf
- 24:33dahinter ist. Um das noch mal ein bisschen zu
- 24:35verdeutlichen und dann können wir mal so bisschen mehr in die
- 24:38technische Software Richtung, weil ich denke, Analogien haben
- 24:41wir genug gebracht. Also ich würde mir jetzt denken,
- 24:43ja okay mit dem Controller, da habt ihr mich.
- 24:45Geheilt dem Xbox Controller ne. Ja.
- 24:52Mach mal weiter. Ah schön.
- 24:56Dann hau mal raus. Also wie, wie, wie kann man sich
- 24:58das jetzt vorstellen? Ich hatte ja schon gesagt, also
- 25:01es gibt ja zum Beispiel, wenn du es jetzt von den Begriffen her
- 25:03nimmst, ne, es gibt n Client, das ist irgendwie sagen wir mal
- 25:07der oder der Part in der Software, der tatsächlich diese
- 25:10Funktion aufruft, zum Beispiel, was hatten wir vorhin zum
- 25:13Beispiel Pay ne von dem Payment Service, also du hast irgendwie
- 25:16sagen wir mal den Payer ne der Bezahler, die Bezahlerklasse die
- 25:21halt irgendwie dann Pay aufruft oder so ne oder der.
- 25:24Nennen wir es mal Payment Payment Service.
- 25:28Sowas ja. Pay Manager Manager ist gut.
- 25:31Das müsste ich jetzt machen, um irgendwie vielleicht n bisschen
- 25:33zu triggern. Aber ne, also Payment Service
- 25:36ruft Pay auf und dahin, das ist der Client, der macht halt
- 25:39irgendwas, der Akteur sozusagen ne und dann gibt es halt eben
- 25:42einmal. Das Target Interface ne, das ist
- 25:47quasi genau das, was der Client oder unser Service dann im
- 25:50Endeffekt erwartet, wenn er Pay aufruft.
- 25:52Ne, dass vielleicht irgendwie Daten zurückkommen oder ne was
- 25:55auch immer, sagen wir mal oder du willst die Pay, also die
- 25:58Zahlinformationen haben die du brauchst, von dem wir vorhin
- 26:01geredet haben und die will sich der Service jetzt holen ne und?
- 26:04Er kriegt halt das was er braucht, ne.
- 26:07Ob das jetzt zum Beispiel von der Sofortüberweisung ist oder
- 26:09von paypal ist egal. Das was er braucht, es wird
- 26:12vielleicht noch Gemappt für irgendwie was, was
- 26:14allgemeingültig in dem eigenen System ist.
- 26:16Beispielsweise ne und das ist ja das Targetinterface, also das
- 26:21erwartet dieser Client und dann gibt es halt eben die diesen
- 26:24Adepti ne, das ist sozusagen dann die alte inkompatible
- 26:28Klasse, die irgendwie da ist. Existiert, die man irgendwie
- 26:32nutzen muss. Und den Adapter der ich sag mal
- 26:35so gedanklich um den Adaptiv Rumgelegt wird, damit er halt
- 26:40eben passt. Mhm so.
- 26:44Genau also das ist, kann man sich ja so vorstellen, wenn ich
- 26:48jetzt zum Beispiel diesen das Target Interface aufrufe, weil
- 26:51du meintest, ich erwarte gewisse Daten ne und wenn wir jetzt das
- 26:54Bezahlthema nehmen, dann möchte ich jetzt sowas wissen wie.
- 26:57Ist die Transaktion ausgeführt worden?
- 26:59Ich hätt gern ne transaktions IDN Zeitpunkt wann das gemacht
- 27:03wurde über den Betrag so weiter. Also da erwarte ich ja in meinem
- 27:07Client gewisse Daten die ich zurückbekomme beispielsweise ja
- 27:11und die muss ich ja jetzt, dafür muss ich ja jetzt sorgen, dass
- 27:16egal mit was ich bezahle, diese Daten auch zurückkommen, ne also
- 27:19dass dieses Interface erfüllt ist, sozusagen diese
- 27:22Schnittstelle. Und wenn wir jetzt so n Adapti
- 27:24haben, wieso Sofortüberweisung? Dann kann es ja sein, dass da
- 27:28gewisse Daten einfach anders formatiert sind.
- 27:32Ja, das gutes gutes Beispiel ist einfach, dass es anders
- 27:35formatiert ist, dass man die vielleicht noch aufbereiten
- 27:37muss. Ja nimm mal zum Beispiel n
- 27:40Zeitstempel ja, also wenn du sagst, wann wurde die
- 27:43Überweisung ausgeführt, so neue Systeme geben dir das jetzt nach
- 27:48in der Einzeitzone und das ein System denkt sich nee hier.
- 27:53Überweisung innerhalb von Deutschland das ist jetzt nach
- 27:56deutscher Zeit und nicht ISO beispielsweise.
- 27:59Ja. So, und dann kannst du jetzt
- 28:01sagen, bald den Zeitstempel zurück.
- 28:04Ja gut, dann hast du aber n Stundenversatz drin, jetzt
- 28:07bezahlt einer innerhalb von einer Minute mit Paypal und dann
- 28:11ne, also ne inlandsüberweisung sag ich mal.
- 28:14Ist jetzt rein hypothetisch ne, aber dein System sagt auf einmal
- 28:18da waren aber jetzt da sind ja noch n paar Stunden dazwischen.
- 28:20Ja. So weil.
- 28:23Du dein inkompatibles System angebunden hast.
- 28:25Was, und das ist n worst Case die Daten irgendwo verarbeitbar
- 28:29sind aber einfach nicht stimmen oder einfach nicht das sind was
- 28:32der Client erwartet. Da hat wohl jemand, da wurde
- 28:34nicht gelesen. Bitoku nicht gelesen und da wär
- 28:37jetzt so n Adapter halt genau richtig zu sagen Hey nee warte
- 28:40mal. Wir müssen natürlich in der
- 28:41richtigen Zeitung im richtigen Format das zurückgeben, wir
- 28:43müssen die richtigen Daten zurückgeben, genau.
- 28:46Ich hab auch schon Beispiele gesehen und das ist da denkt man
- 28:49sich auch so. Oh Mann ey, ist das notwendig?
- 28:50Ja ist es, dass du zum Beispiel eigentlich die gleiche Funktion
- 28:53aufrufst? Ne, die vielleicht wirklich nur
- 28:55anders heißt oder zum Beispiel sich n Datentyp ändert.
- 28:59Ja, ist jetzt immer so, n Beispiel da gehen alle mal auf
- 29:03die Barrikaden ja ich stell mir vor du bezahlst jetzt was und
- 29:07der eine nimmt halt. Sag ich mal ganz zahlen ja, um
- 29:11das halt um keinen Rundungsfehler drin zu haben
- 29:13oder der andere sagt durch hier gib mir float hier 5,32€ ja mal
- 29:19als Beispiel und deine Schnittstelle sagt aber nicht
- 29:22ich hätt das aber gerne in Ganzzahlen ja um den
- 29:24Rundungsfehler aus dem Weg zu gehen.
- 29:27Dann Fehler, zack. Fehler so, dann musst du halt
- 29:30auch die mit dem Adapter quasi versuchen das bestmöglich
- 29:34fingercross ja umzuwandeln dann. Ja.
- 29:38Definitiv. Also finde ich sehr gute
- 29:40Beispiele und im Endeffekt um das jetzt wirklich, wenn du das
- 29:44jetzt implementieren willst. Es gibt ja theoretisch
- 29:46verschiedene Möglichkeiten, wie du ja schon meintest, wir können
- 29:48jetzt angepasst auf das USB C auf aux oder Bluetooth auf aux
- 29:56dieses Adapter Ding können wir anpassen und sagen es gibt
- 29:59verschiedene Adapter Möglichkeiten und zum Beispiel
- 30:02gibt es die. Sagen wir mal den Object
- 30:04Adapter. Das ist ja also jetzt wirklich
- 30:07als Implementierung ne oder implementierungsvariante ne ist
- 30:12ja eigentlich n relativ gängiger Adapter n gängiges Adapter
- 30:17pattern sag ich jetzt mal, was man halt auch oft verwendet, das
- 30:20ist im Endeffekt genau. Das, was wir gerade so n
- 30:23bisschen beschrieben haben, ne. Also du kriegst jetzt zum
- 30:24Beispiel von dem von dem einen Controller kriegst du Input und
- 30:28sollst damit irgendwas steuern, ne also oder du kriegst halt von
- 30:31keine Ahnung einem anderen Controller wie zum Beispiel mit
- 30:33dem Lenkrad auch n Input und sollst das halt eben auch sollst
- 30:36auch ne irgendeine Figur steuern beispielsweise, das heißt Du
- 30:38kriegst zum Beispiel von dem einen irgendwie Daten rein von
- 30:41dem einen System und von dem anderen System ne sagen wir mal
- 30:43das Lenkrad wäre jetzt das zum Beispiel so n altsystem oder
- 30:46irgendwas was eigentlich nicht passt, du es aber trotzdem
- 30:49anpassen möchtest ne und? Es gibt theoretisch aber ja auch
- 30:53noch die Möglichkeit, dass du sagst, du hast so ne
- 30:55bidirektionale Verbindung. Ne, wie zum Beispiel du hast
- 30:59irgendwie ne Art Kommunikation, ne, also wie wir zum Beispiel
- 31:03vorhin bei dem Real Life Beispiel hatten von Übersetzer
- 31:07ne, so dass du halt irgendwie ne Translation hast.
- 31:09Das heißt 2 Leute unterhalten sich und dazwischen steht n
- 31:11Dolmetscher ne, das heißt du hast quasi.
- 31:15Mehr oder weniger in 2 Richtungen ne.
- 31:17Es gibt so n tuway Adapter, dass du im Endeffekt das ganze so
- 31:20machst, dass du dieses, diesen dieses Interface was dafür sorgt
- 31:25ne oder beziehungsweise der Adapter selber ne nimmt.
- 31:29Jetzt die Adaptivs sind beides mehr oder weniger, dann adaptivs
- 31:32die dann gegenseitig sozusagen. Übersetzt werden also, das sind
- 31:37beispielsweise jetzt so 2 deutlich, ich nenn es mal eher
- 31:41verschiedene Art und weisen um Adapter umzusetzen, die es zum
- 31:44Beispiel so gibt, ne als Implementierungsvarianten.
- 31:48Aber was ist denn für dich so, die die gängige Variante, wie es
- 31:51oft implementiert wird oder wie man es halt auch so aus
- 31:53Lehrbüchern kennt? Also ich hatte es nicht gesagt,
- 31:56also ich glaube, ich hatte, vielleicht hab ich es nur
- 31:58gedacht. Ist ja manchmal so, der also ich
- 32:01würde sagen, das wäre der Object Adapter, weil so dieses.
- 32:04Dieser Tuway Adapter, den hab ich, ich glaub den musste ich
- 32:06selber auch noch nie verwenden, also noch nie, selbst jetzt in
- 32:10einem Real Life Beispiel richtig benutzen ne also in in in einer
- 32:15echten also ne. Echt noch kein Übersetzer
- 32:19geschrieben für die Sprachen. Also nicht Real Life Analogie
- 32:23Beispielmäßig, sondern weißt du so wirklich mal implementieren
- 32:26wusste ich es nicht. Für ne echte Anwendung so aus
- 32:29Spaß mal aber eher der Object Adapter.
- 32:32Ne, dass du wirklich sagst OK du hast irgendwas was von irgendwo
- 32:35kommt, ne was irgendwie zum Beispiel Daten schickt womit du
- 32:38die du weiterverarbeiten möchtest.
- 32:42Ja, also das ist eigentlich auch wirklich immer das erste, was
- 32:45man so findet, wenn man jetzt danach google und so.
- 32:49Codebeispiele sehen möchte, dass du halt einfach wie gesagt in
- 32:52deinem Target Interface sozusagen ne Instanz beinhaltest
- 32:56von deinem Altsystem und dann direkt darauf mappen kannst.
- 32:59Ne, das ist halt auch sehr flexibel.
- 33:01Am Ende muss man sagen, hat aber halt n gewissen Overhead auch
- 33:05mit bei sich, ja und? Da muss man ja wir.
- 33:08Hatten uns ja vorgenommen, dass wir auch mal Codebeispiele dazu
- 33:11zeigen wollen. Da arbeiten wir ja schon dran.
- 33:13Und dann reminder an uns, dass wir das dann auch mal
- 33:16darstellen, dann kann man das auch einfach n bisschen besser
- 33:17sehen. Genau.
- 33:20Aber ich würd gerne mal so vor und Nachteile beleuchten, weil
- 33:26ja kann man jetzt viele denken, sich jetzt vielleicht ja OK kann
- 33:29man draus ableiten, ja ich kann halt als Systeme anbinden,
- 33:32Nachteil ich muss sie anbinden, es funktioniert halt nicht
- 33:34einfach so ja, aber da steckt ja noch n bisschen mehr dahinter,
- 33:39ich finde nämlich n ganz guter Punkt dabei ist auch nicht nur,
- 33:43dass ich sage ich kann Legacy Code.
- 33:45Wiederverwenden oder weiterverwenden, sondern ich
- 33:49schaffe damit auch eine gewisse, einen gewissen Grad der
- 33:53Entkopplung und das hat man eigentlich an unseren Beispielen
- 33:56auch ganz gut gesehen, weil dieser Client, wie wir ihn
- 33:59nennen oder wie er auch so laut Lehrbuch genannt wird.
- 34:03Erwartet jetzt eine Schnittstelle, aber ihm ist egal
- 34:05wie die implementiert ist oder was dahinter steckt.
- 34:08Die Logik sitzt ja quasi auf der gegenüberliegenden Seiten, zum
- 34:12Beispiel beim Adapti ja, also bei dem Altsystem und du selbst
- 34:18in als Client möchtest ja nur, dass das ausgeführt wird, was du
- 34:22erwartest und du dementsprechend auch die Werte oder Daten
- 34:25bekommst, die du erwartest. Und dadurch schaffst du halt
- 34:29eine super Entkopplung, dass dein Client die.
- 34:33Dieses Altsystem, diesen Adapti ja gar nicht kennen muss.
- 34:36Ja, ich find das ich glaub das hatte ich auch schon mal gesagt.
- 34:39Das ist natürlich immer so n bisschen eventuell so n bisschen
- 34:43merkwürdig, dass man sich sagt OK muss man nicht kennen, ist
- 34:46vor allem halt relevant wenn man vielleicht nicht nur alleine an
- 34:49einem Code arbeitet ne also einfach jetzt aus der Sicht
- 34:52heraus, dass du sagst, angenommen du.
- 34:55Musst jetzt zum Beispiel, du hast die Aufgabe, innerhalb
- 34:58eines Teams neues Altsystem oder n anderes System, was aber nicht
- 35:02ganz zu deiner Schnittstelle passt, anzubinden, weil
- 35:04irgendjemand sagt, Ey, du musst das die Daten, wir brauchen die
- 35:07ne, dann musst du dir nicht jedes Mal überlegen ha, wie mach
- 35:11ich denn das jetzt so, sondern du weißt ja ganz genau OK pass
- 35:14auf, ich brauche diese Daten auf meiner Seite des Systems und ich
- 35:17kriege diese Daten von der anderen Seite des Systems und
- 35:20jetzt muss ich gucken, dass ich das irgendwie so Mappe mit
- 35:23meinem Adapter, dass ich halt eben.
- 35:26Ne die Daten da rein pipen kann sozusagen ne über den Adapter.
- 35:29Ne das ist im Endeffekt, dass mein System versteht was es all
- 35:33System schickt, weil eigentlich mehr oder weniger die gleiche
- 35:36Sprache gesprochen wird. Ne, also du kannst ja mit
- 35:39Spanisch genau das Gleiche sagen, ne im Deutschen, bloß
- 35:43dass man, wenn man keinen Übersetzer hat, das halt nicht
- 35:45versteht und. Das ist halt n supergeiler
- 35:48Vorteil, weil du überhaupt nicht dir irgendwie Gedanken darüber
- 35:51machen musst. Wie mach ich das denn diesmal?
- 35:53Sondern du hast ja schon mehr oder weniger n Reglement zu
- 35:55sagen, das braucht mein System, ne.
- 35:59Und das ist halt auch gerade so hinsichtlich von Protokollen,
- 36:02weil wir ja auch so Bluetooth hatten.
- 36:03Ja einfach ne super Sache, weil dem Handy ist ja egal wer am
- 36:07Ende der Empfänger der Bluetooth Signale nenn ich es mal ne ist.
- 36:12Sondern der Task ist. Sende jetzt bitte Audio über die
- 36:16Bluetooth Schnittstelle. Das Handy macht es ob direkt das
- 36:20Radio angeschlossen ist und das empfängt oder nen Adapter
- 36:23dazwischen ist der es dann weitergibt an das Radio, das ist
- 36:26ja deinem Handy komplett egal. Dein Handy weiß ja nicht, dass
- 36:28es über nen Adapter geht oder über n Radio oder über die ja
- 36:32klassische JBL Box im Garten so ja also das das spielt ja keine
- 36:36Rolle, das ist ja das Gute dabei.
- 36:40Und was ich natürlich auch gut finde dabei ist oder was man als
- 36:43Vorteil einfach nennen muss, ist auch so diese Single
- 36:46Responsibility. Ja, also das SRP Prinz SRP
- 36:50Prinzip SR Prinzip, dann hatten wir ja auch schon mal in einer
- 36:55Podcast Folge behandelt und es ist halt gut, dass du sagen
- 36:58kannst, ich habe jetzt einen Adapter, der auch wirklich nur
- 37:01diese Aufgabe der Übersetzung. Übernimmt ne.
- 37:04Also ich etablier jetzt einen Adapter.
- 37:06Ja, ich nutze dieses Pattern um wirklich nur mich darum an
- 37:10dieser Stelle kümmern zu können und dann ist es für beide Seiten
- 37:14OK und spielt keine Rolle, dass da irgendwie n Adapter
- 37:17dazwischen hängt und das gibt natürlich auch ne ordentliche
- 37:21Flexibilität, ja. Ja, definitiv.
- 37:23Ich mein, diese Flexibilität kaufst du dir natürlich wieder
- 37:26ein, logischerweise durch ne zusätzliche Komplexität, weil du
- 37:29natürlich sagst, OK. Du hast halt eben diesen
- 37:33Overhead von sagen wir mal einem Adapter Interface sozusagen.
- 37:38Was du halt also implementieren musst, warten musst anpassen
- 37:42musst eventuell, wenn du zum Beispiel deinen Adapter anpasst,
- 37:45ne musst du halt auch eben gucken.
- 37:47OK, angenommen du hast 5 Systeme angebunden, ne so und jetzt
- 37:51sagst du ja aber ich brauche in meinem System aber noch das und
- 37:53das. Und dann kann es ja durchaus
- 37:56sein, dass du zum Beispiel von 3 Systemen oder von 4 Systemen
- 37:59diese diese Daten auch noch bekommst, die du vorher
- 38:01vielleicht ignoriert hast. Aber beim fünften System musst
- 38:05du halt noch mal irgendwie keine Ahnung 10 verschiedene Daten
- 38:09zusammenführen, ne konvergieren verrechnen, damit du wirklich
- 38:12auf den Wert kommst, den du eigentlich brauchst.
- 38:14Ne, also das muss man sich. Natürlich muss man natürlich im
- 38:17Hinterkopf behalten, dass ne Anpassung des sagen wir mal
- 38:21Adapters durchaus eben. Auch n bisschen mehr mit sich
- 38:26bringen kann und du halt immer den Overhead logischerweise hast
- 38:29von von dem was du implementieren musst
- 38:32logischerweise ne. Ja, ganz klar, du hast diesen
- 38:37Overhead das das nicht wegzudiskutieren.
- 38:39Du hast natürlich durch diese Flexibilität den Vorteil auch
- 38:42mehrere Adapter verwenden zu können.
- 38:45Ja wenn wir jetzt noch mal auf das Beispiel Controller gehen.
- 38:49Kann ich ja einfach für jeden Controller den ich habe, diesen
- 38:53Adapter implementieren und sie können, wie wir vorhin meinten,
- 38:56das gleiche Spiel am Ende spielen und dann spielt es keine
- 38:58Rolle, ob ich jetzt gerade mit meinem Xbox Controller oder mit
- 39:01dem playstation Controller spielen möchte, weil ich habe
- 39:04für jeden einen Adapter. Der dafür sorgt, dass die
- 39:07Signale zu den richtigen, also richtig connected werden
- 39:10sozusagen. Und das ist ja ne geile Sache
- 39:12und das gibt halt enorm Flexibilität.
- 39:14Aber ja wie du meintest, ich komm ja nicht drum rum diesen
- 39:18Adapter für jeden Controller zu schreiben, ich kann natürlich
- 39:21den Ansatz gibt es auch so ne Art generic schreiben ja, also
- 39:24dass ich sage ich habe so n keine Ahnung, wenn ich nicht n
- 39:27wirklichen passenden Adapter hab, dann hab ich noch so n
- 39:29allgemeingültigen und vielleicht passt es gibt es gab es ja auch
- 39:32früher oft, aber das ist. Ja, das ist ja noch mal ne
- 39:35andere Geschichte, aber grundsätzlich brauche ich halt,
- 39:37ist das ja eher den Fallback, sondern ich hab eigentlich nen
- 39:40Adapter, der darauf genau passt. Ja genau ich mein gut, du kannst
- 39:45auch Adapter weglassen und wirklich jedes System 1 zu 1 zu
- 39:48anbinden, dann musst du irgendwo ne krasse Unterscheidung machen
- 39:52und sagen, wenn jetzt quasi das und das ist, dann musst du die
- 39:55Daten da und davon nehmen und genauso wie sie sind keine
- 39:58Ahnung das macht es aber am Ende halt deutlich unübersichtlicher.
- 40:03Und also das bläht halt den Code enorm auf.
- 40:05Dann am Ende ne deswegen ja auf jeden Fall.
- 40:08Also over use ist da auch, also wie hatten wir das so schön
- 40:12immer wenn wir n Pattern kennengelernt hatten, dann haben
- 40:14wir es erstmal massiv genutzt, hier muss man natürlich sagen
- 40:17beim Adapter Pattern over use ist sehr schädlich fürs Projekt.
- 40:24Ja, es ist halt so. Wenn ich jetzt anfange, mir zu
- 40:26denken, Oh, bei jeder Schnittstelle und bei jedem
- 40:27Aufruf, vor allem ich mach mal n Adapter dazwischen, wer weiß was
- 40:30ich da noch so anbinden muss. Das ist jetzt natürlich nicht
- 40:33Sinn und Zweck, ne. Ja, es ist halt.
- 40:35Am Ende kommt es ja immer auf den auf den Knackpunkt hinaus.
- 40:38Ne, passt es denn zu dem was du gerade brauchst?
- 40:41Und wenn du sagst? Du hast zum Beispiel viele
- 40:43verschiedene Datenquellen, Systeme, die du irgendwie
- 40:46anbinden möchtest, mit denen du irgendwie arbeiten musst.
- 40:48Wie auch immer, dann ist es natürlich sinnvoll n Adapter zu
- 40:51schreiben oder wenn die Daten so unterschiedlich aufgebaut sind,
- 40:56dass es eigentlich überhaupt nicht zusammenpasst.
- 40:58Ne, dann macht es irgendwann auch Sinn.
- 41:00Also es bringt ja nichts, wenn du sagst.
- 41:02Du hast 5 verschiedene Systeme und System 12345 haben.
- 41:05Alle sind unterscheiden sich so extrem in dem wie die
- 41:09Datenrepräsentation ist, dass es am Ende einfach gar keinen Sinn
- 41:12macht zu sagen, gut dann nehm ich mir halt wirklich.
- 41:15Du könntest ja also sozusagen wirklich alles einzeln zu
- 41:18händeln. Weißt du, das ist irgendwie dann
- 41:20dann dann kommst du ja völlig durcheinander innerhalb deines
- 41:22eigenen Systems, ne, da muss man halt wirklich gucken, OK, wann
- 41:27macht es Sinn und wann nicht wenn du sagst.
- 41:30Ich. Weiß ich nicht, bin vielleicht
- 41:32auch nur ein System an, dann kannst du es halt auch direkt
- 41:35overfitten sozusagen an dieses eine System.
- 41:39Ne ja, das stimmt, das stimmt, weil man hat natürlich auch die
- 41:42Gefahr, dass es so ein bisschen Performance Einbußen geben
- 41:47könnte oder Overhead erzeugt. Weil ich halt wie gesagt immer
- 41:51noch ne ne Schnittstelle dazwischen hab oder ne Instanz.
- 41:54Ja, also wie wir zum Beispiel vorhin meinten, wenn ich einfach
- 41:57in meinem Adapter halt die als Systeme als Objekt halte,
- 42:01beispielsweise um dann darauf ja ich ich nenn es jetzt mal mappen
- 42:04zu können, ja das sind ja alles so Themen, die hätt ich nicht,
- 42:08wenn ich gar nicht erst n Adapter brauche ne also oder gar
- 42:11nicht erst verwende, weil es vielleicht wirklich nicht
- 42:13notwendig ist an der Stelle deswegen over use.
- 42:16Geht schnell, gerade wenn man sagt, Oh, das Pattern hab ich
- 42:19jetzt gelernt, das will ich jetzt verwenden, aber es geht
- 42:22natürlich einfach. Die Systeme sind kompatibel,
- 42:24packen Adapter dazwischen. Wer weiß, vielleicht sind sie es
- 42:28morgen nicht mehr. Aber wir wollen natürlich auch
- 42:33drauf eingehen, was sind. Wo ist es denn jetzt geeignet,
- 42:35wir haben ja so Beispiele gebracht, wo man schon gesehen
- 42:38hat, oder die haben wir ja gebracht, weil es dafür geeignet
- 42:41ist. Also Stichwort Integration von
- 42:43Legacy Code, weil ich vielleicht noch n gewissen Support leisten
- 42:45muss. Abgehackt würde ich sagen, haben
- 42:47wir drüber gesprochen, Payment hatten wir angesprochen und das
- 42:52ist n großer Punkt wann das Sinn macht und zwar wenn ich so APIS
- 42:55zum Beispiel vereinheitlichen möchte, ja also.
- 42:58Ich habe wie gesagt das gleiche Konzept wie zum Beispiel Payment
- 43:02und hab jetzt unterschiedliche Dienstleister mit einer API zum
- 43:05Beispiel und das zu vereinheitlichen und dann
- 43:08Adapter zu verwenden um das zu gewährleisten ist n super
- 43:11Anwendungsfall also da macht es Sinn nicht vielleicht nicht in
- 43:16jedem Fall ne man kann es halt nicht verallgemeinern, aber das
- 43:20ist so n Punkt, da würde ich auch ans an den Adapter denken
- 43:24sozusagen. Ja, Datenformate konvertieren,
- 43:27gerade wenn vielleicht auch von A nach B und von B nach A.
- 43:30Ne sowas wirklich to way binding, dass du sagst ne
- 43:33irgendjemand schickt zum Beispiel json irgendwas json
- 43:36mäßiges. Zu zu nem zu nem anderen Client
- 43:39beispielsweise beispielsweise und der liest aber nur XML ne
- 43:43so. Damit du aber sagen kannst, OK
- 43:45hier von a kann json zu XML nach B übertragen werden und aber
- 43:49gleichzeitig möchte zum Beispiel aber auch XML von B wiederum zu
- 43:52a übertragen werden, dann kannst du halt so ne Art Tuwaybinding
- 43:55beispielsweise machen, weil du dann halt eben ne in beide
- 43:57Richtungen irgendwie oder in vielleicht mehrere Richtungen
- 44:00einfach sagen kannst. OK, du hast Daten vom, also
- 44:03diese diese. Formate passen halt in alle
- 44:07Richtungen überein, dass du es halt sozusagen konvertieren
- 44:09kannst. Ne und ich glaub am Anfang
- 44:11hatten wir auch gesagt Neue, also Libraries nutzen, dass du
- 44:14halt einfach bestehende Libraries, die es gibt, anbinden
- 44:17kannst und sagen kannst, OK, nimm sie auch wenn es gerade
- 44:21nicht hundertprozentig passt, kannst ja n Adapter nehmen um
- 44:24sie halt eben trotzdem zu nutzen, um halt eben zum
- 44:26Beispiel Libraries nicht noch mal neu schreiben zu müssen oder
- 44:29so ne. Ja, oder die, die vielleicht gar
- 44:31nicht in deiner Hand liegen, ne, aber du sie einbinden oder noch
- 44:33supporten möchtest. Ja, das sind richtig klassische
- 44:36Beispiele, finde ich. Gut, man muss natürlich drüber
- 44:39sprechen, wann ist es nicht sinnvoll, da hast du ja gesagt,
- 44:45Hey A und b passt zusammen machen halt das dazwischen, das
- 44:48ist natürlich, also wenn Kompatibilität herrscht, auch
- 44:52wenn man vielleicht die Vermutung hat, dass das
- 44:54zukünftig nicht mehr so ist. You ain gonna need it Prinzip
- 44:58ja, yakni mach es nicht, lass es dann an der Stelle, es ist
- 45:02kompatibel, du brauchst keinen Adapter gerade, also da ist es
- 45:06natürlich nicht sinnvoll. Performance kritische Systeme
- 45:11könnte man noch nennen, weil ich ja meinte es kann Overhead
- 45:14erzeugen, ist so n bisschen schwammig der Punkt aber würde
- 45:17ich einfach mal anbringen, weil was ist jetzt Performance
- 45:20kritisch? Ja, also ist es halt die Frage.
- 45:23Kann es sein, dass mir das so in die Suppe spuckt, diesen
- 45:26Overhead, den ich erzeuge, dass ich es vielleicht so nicht lösen
- 45:29sollte, krasse Daten ja, zum Beispiel ja auch alles, was
- 45:34hinsichtlich so Datenübertragung ist, kann das halt ne Rolle
- 45:37spielen und vielleicht nicht sinnvoll sein.
- 45:40Alles, so sag ich mal kompatibel zu machen.
- 45:43Also nee sag ich mal alles verlangsamen auf.
- 45:46Zugunsten der Kompatibilität ne. Und dann muss ich vielleicht n
- 45:49anderen Weg gehen um diese Kompatibilität herzustellen.
- 45:53Ja, auf jeden Fall. Fällt dir noch was ein?
- 45:57Ja, ich weiß nicht, wenn du halt weiß, ich kurzlebige Projekte
- 46:00hast, vielleicht noch, wo man halt eben den Overhead eines
- 46:04Adapters vielleicht sich sparen kann.
- 46:06Ne kennt man ja die guten Wegwerf Software, Projekte,
- 46:10Projekte. Aber das ist auch n guter Punkt.
- 46:17Hatten wir ja gerade erst vor kurzem mit gerade im Studium
- 46:21oder so. Wenn du so übungsaufgaben hast
- 46:23oder so die ne Lebensdauer von einem Semester maximal haben, ne
- 46:28da ist dann halt auch die Frage zum Üben ja OK, wenn ich sage
- 46:31ich möchte mal n adapterpad dann verwenden OK verstehen wir wie
- 46:34gesagt haben wir auch gemacht. Aber halt nicht alles
- 46:37vollknallen damit, weil es ist manchmal gar nicht notwendig,
- 46:40den quasi diese Kompatibilität zu gewährleisten.
- 46:44Langfristig richtig also so kurzlebige Projekte finde ich
- 46:47halt auch ganz spannend, dass man sagt, da vielleicht jetzt
- 46:50noch nicht. Richtig, ja.
- 46:53Also zusammenfassend können wir einfach sagen, Adapter Pattern
- 46:56ist mehr oder weniger n Übersetzer ne für Systeme die
- 46:59eigentlich vielleicht nicht unbedingt kompatibel sind und
- 47:03sie kompatibel zu machen. Wie zum Beispiel?
- 47:06Keine Ahnung der ne Controller was das Controllerbeispiel was
- 47:08wir hatten oder ne hier mit dem Steckdose mit der Steckdose ne
- 47:12wenn der quasi n anderes oder Payment anderes Land reist.
- 47:15Payment wie auch immer genau ja und ansonsten.
- 47:21Ja, Bluetooth Dongle, das ist wichtig.
- 47:23Noch der ne im Auto mit Autos, das sollten wir, der der muss.
- 47:27Das ist wirklich n gutes Beispiel, weil ich finde, gerade
- 47:29wenn man, also ich weiß nicht wie es bei dir ist, aber wenn
- 47:31ich so über Pattern nachdenke, ja und jemand sagt so na hier
- 47:35Adapter ne, dann denk ich mir so ha mal was mal wie ging, wie hat
- 47:40das noch mal funktioniert und ich finde, dass mir so reale
- 47:42Beispiele immer helfen um wieder in dieses Grundprinzip zu
- 47:46kommen, weil du ja wirklich nur Abbilder davon schaffst ne oder
- 47:49beziehungsweise sich. Prinzipien und Theorien ja,
- 47:53wiederholen so und du hast die Halt einmal so auf Hardware zum
- 47:56Beispiel gemünzt mit so wie du meintest dein Bluetooth Adapter
- 48:00oder halt auch in der Softwareentwicklung selbst oder
- 48:02halt n Mix aus beidem. In dem Fall ja und da find ich
- 48:05hilft mir das immer mir reale Beispiele vorzustellen und beim
- 48:08Adapter Pattern ist für mich die Steckdose so n super.
- 48:10Geiles Beispiel für mich und jetzt auf jeden Fall.
- 48:13Dieses Bluetooth Ding. Ja OK, sehr gut.
- 48:16Ja, aber das ist halt so. Ich brauch Strom, ja ich hab
- 48:18Strom, aber wir passen nicht zusammen, aber dann nehm ich n
- 48:20Adapter dazwischen und schon sind alle zufrieden.
- 48:22So ne ja richtig, das ist schon ja OK fabi ich würd sagen kurz
- 48:27und schmerzlos nee ganz so kurz war es nicht, aber wir sind ganz
- 48:30gut in der Zeit und trotzdem würd ich sagen haben wir es
- 48:32ausführlich besprochen, da bleibt eigentlich nur noch 1 und
- 48:35zwar die Frage an dich liebe Zuhörer und liebe Zuhörer.
- 48:38Welches Adapterproblem hattest du denn schon mal im echten
- 48:41Leben oder in deinem Leben als Entwicklerin oder Entwickler?
- 48:45Schreib uns gerne gerade für die realen Beispiele wären wir sehr
- 48:49dankbar, das finden wir mal sehr interessant.
- 48:51Fällt dir noch was Besseres als die Steckdose oder den Bluetooth
- 48:54Dongle ein? Dann lass es uns wissen.
- 48:57Genau. Hat mir auf jeden Fall Spaß
- 48:58gemacht. Tino und ich hoffe es hat euch
- 49:01auf jeden Fall auch gute Insights gegeben, auch an dich
- 49:04Liebe zur lieber zur wenn du dir sagst Mensch hier das ist cool,
- 49:08zeig doch auch wirklich mal gerne irgendwie auf Instagram,
- 49:10youtube wie auch immer n paar Patterns die wir vielleicht in
- 49:14dem kleinen Video verpacken, dann schreib uns gerne, sag uns
- 49:16gerne Bescheid alle Plattformen. Sind in den Shownotes verlinkt.
- 49:20Wenn du sagst ey, hier war mal wieder ne coole Folge, hat Spaß
- 49:24gemacht die Coding Buddies, denen würde ich gerne auch noch
- 49:27mal ne Kleinigkeit, also die würde ich gerne supporten, dann
- 49:31gibt es auch ebenfalls in den Shownotes unten einen Link dafür
- 49:34und ansonsten würden wir uns mega freuen, wenn ihr den
- 49:38Podcast bewertet und Weiterempfehlt das hilft uns
- 49:43natürlich super und bevor wir jetzt hier die Folge ausmachen,
- 49:46denkt noch dran. Das 4 Gewinnturnier unbedingt
- 49:50mitmachen wollte dich nur noch mal kurz dran erinnern und
- 49:53ansonsten Tino Mach's gut, liebe zura Liebe Zura, bis zur
- 49:57nächsten Folge Deine Colin Walz. Gemeinsam besser.