Latest / Coding Buddies | Tech & Dev-Mindset / #143 Dein Code schreit "Entkoppel mich"? - Hier ist die Lösung
Transcript
- 0:00Come on ist nicht dein ernst, dass du es warst?
- 0:02Ja doch, sag mal, es ist nicht dein ernst, dass du das fragst.
- 0:04Ja, wirklich, weiß du. Nicht.
- 0:06Es ist no. Bad Coding Buddies Dein Podcast
- 0:11rund um Softwareentwicklung und aktueller Tech News.
- 0:14Herzlich Willkommen. Halli Hallo und Herzlich
- 0:29Willkommen zum Coding Buddies Podcast.
- 0:32Es ist wieder Zeit für die nächste Folge und zwar mit mir,
- 0:37dem Fabi und natürlich mit Tino, der hier schon wartet.
- 0:42Auf der anderen Seite im Bildschirm.
- 0:46Tino, Wie geht's? Was geht ab?
- 0:49Fabi Ja, mir geht's gut, mir geht's gut, ja alles fit soweit
- 0:54alles alles fit klingt alles fit, klingst n bisschen fertig
- 0:57hab ich so das Gefühl, aber es scheint zu trüben.
- 1:02Naja weißt du, man will sich ja nicht beschweren, oder wie heißt
- 1:05das immer so schön? Nee alles gut, ich bin n
- 1:06bisschen nicht ganz bei 100% Energie, aber es ist alles nur
- 1:10im grünen Bereich, der eilt hier weißt du manche Tage da ist man
- 1:13einfach so n bisschen müde. Ja, vor allem vor allem in der
- 1:17Jahreszeit ist das eine ganz normale Sache.
- 1:22Ich weiß auch nicht, das ist halt einfach da, da kommst du
- 1:25nicht drum herum, dass man einfach mal sich denkt, weißt
- 1:28du, morgens stehst du auf, ich finde es ja krass einfach,
- 1:31dieses morgens aufwachen und sich denken, so, es ist noch, es
- 1:35ist noch Nacht oder es ist noch Nacht, guckst kurz aufs Handy
- 1:37oder auf die Uhr und denkst dir so ne, du musst in 10 Minuten
- 1:40aufstehen, scheiß. Ja, das Frustrierende ist ja,
- 1:45dass eigentlich immer Nacht ist. Ja egal, was du machst.
- 1:47Nur wenn du arbeitest, dann ist nicht Nacht.
- 1:49Aber ansonsten ist immer dunkel draußen.
- 1:52Ja man man kommt halt, man kommt nach der Arbeit auch zu nichts
- 1:55mehr, dann ne also willst also draußen brauchst du gar nichts
- 1:58mehr zu machen eigentlich ne, du kannst nicht laufen gehen falls
- 2:00man laufen geht als Beispiel oder irgendwie weiß ich
- 2:05irgendwas draußen machen, so kannst du vergessen das wird
- 2:08nicht mehr. Ab 16:00 Uhr das.
- 2:10War ja tatsächlich echt frustrierend, wenn du sag ich
- 2:14mal so ne Laufrute hast. Also ich geh ja ab und zu mal
- 2:16joggen und du hast so deine Route wo du gerne lang läufst,
- 2:21weil es vielleicht so n bisschen in der Natur ist oder so ne,
- 2:24also nicht mit Straßenbeleuchtung sag ich mal
- 2:28und dann wenn der Winter kommt denkst du dir immer so ah nach
- 2:32der Arbeit hätte ich Bock ne jetzt sieht es ja gerade echt
- 2:34noch gut aus und dann ist es halt Instant so.
- 2:36Oder so sag ich mal nach 10 Minuten einfach stockduster und
- 2:39du denkst sehr gut, klasse, jetzt brauch ich auch nicht mehr
- 2:41loslaufen und dann weiß ich nicht, ich hab auch schon so
- 2:43alternative Routen probiert, so in der Stadt mit Beleuchtung
- 2:47aber das das macht mir dann einfach keinen Spaß.
- 2:49Also falls da irgendwer n Tipp hat schreibt uns gerne aber
- 2:53bitte nicht so Taschenlampe auf dem Kopf oder so mit so einer
- 2:56Kopfleuchte das ist auch geil hab ich auch schon mal gesehen.
- 2:59Ja, ich bin ja jetzt nicht so der absolut krasse
- 3:01Läuferliebhaber sozusagen, aber ich sag mal so.
- 3:06Ich finde, wenn ich laufe, ja dann find ich es im Winter oder
- 3:09wenn es was heißt Winter. Also es ist ja noch nicht
- 3:11Winter, aber wenn es n bisschen kühler ist schon find ich es
- 3:13einfach besser, weil dann heizt man nicht so auf.
- 3:16Weißt du ich find es zum Beispiel wenn du wirklich im
- 3:18Sommer läufst so bei annähernd 30 Grad voll schlimm find ich
- 3:23einfach nur weil dann ist einem direkt schon Instant warm und so
- 3:26ist halt wenigstens dir ist kalt dir wird warm alles gut, gutes
- 3:30Level. Ja.
- 3:32Das ist halt dann nur für den Körper natürlich auch ein
- 3:34bisschen belastender. Ne, weil du schwitzt, aber
- 3:35gleichzeitig ist dir eigentlich kalt, das ist halt irgendwie
- 3:39auch komisch ne immer wenn ich dann irgendwie wieder ankomme
- 3:42und zu Hause bin, quasi merke so meine Arme sind eigentlich
- 3:46übelst kalt und so, aber innerlich kochst du sozusagen.
- 3:50Ja, das ist schon, ich glaube ist auch eine Challenge für den
- 3:52Körper, fürs Immunsystem. Das kann sein ja, auf jeden
- 3:56Fall. Wie gesagt, Laufen Leute
- 3:59macht's. Ich mag es, ich mag es ja, aber
- 4:05abgesehen vom Laufen wollen wir natürlich heute wieder ein
- 4:08bestimmtes Thema behandeln. Aber bevor wir das machen, Tino,
- 4:11wollte ich noch einmal, ist, glaube ich, jetzt schon ein paar
- 4:13Tage her, aber damit wir es nicht vergessen, wollten wir uns
- 4:16auf jeden Fall noch mal bei Simon bedanken für die Spende
- 4:19für unseren Podcast. Vielen vielen Dank Simon vielen.
- 4:22Vielen Dank, Simon. Simon hat geschrieben, Mega
- 4:25Podcast, fühle mich sehr abgeholt und wünsche mir auch
- 4:27einen coaling Buddy. Jeder braucht ein coaling Buddy.
- 4:31Leute kommt in die Community, Joint im Discord, da gibt es
- 4:34dann quasi auch n coaling Buddy für jeden.
- 4:36Ich wollt jetzt gerade sagen, da kann man sich n coaling Buddy
- 4:38aussuchen, da sind ganz viele tolle Leute die auch richtig
- 4:41Bock haben. Genau, und das ist eigentlich,
- 4:44das ist so die erste Anlaufstelle für n coaling
- 4:46Buddy. Richtig, auf jeden Fall.
- 4:49Aber vielen dank Simon und liebe Zuhörerin, lieber Zuhörer, wenn
- 4:53du dir denkst, hey, ja doch eine kleine Spende für die beiden,
- 4:56das wäre irgendwie ganz cool, kannst du auf jeden Fall machen,
- 4:58wenn du möchtest. Nur wenn du möchtest, dann gibt
- 5:00es auf jeden Fall einen kleinen Spenden Link in den Shownotes
- 5:04würde uns natürlich mega freuen, wenn es denn passt.
- 5:07Sagen wir mal so, aber Tino, bist du bereit, jetzt lass uns
- 5:11mal das Thema starten. Ich denke.
- 5:15Aber wenn ihr jetzt nicht, wenn ihr jetzt nicht ne krasse
- 5:17Überraschung kommt, denk ich bin ich bereit.
- 5:20Das ist schön. OK, denk ich heute, es geht mal
- 5:23wieder. Wir wollen unsere Reihe
- 5:25fortsetzen und zwar das die Pattern Reihe die Design Pattern
- 5:29Reihe und heute soll es um das Pattern Bridge gehen, also das
- 5:35Bridge Pattern. Lass einfach mal gucken was ist
- 5:39das Bridge Pattern eigentlich mal wieder so ne kleine Analogie
- 5:41geben damit man sich das gut vorstellen kann.
- 5:44Bisschen technischer werden. Wie ist das Ganze aufgebaut und
- 5:48wie unterscheidet sich das eigentlich auch zu manch anderen
- 5:50Pattern? Also bei mir ist es so ne, wenn
- 5:53ich so manche Pattern habe, über die man dann so spricht, dann
- 5:57denk ich mir so k. Aber du könntest doch auch
- 5:58einfach dieses Pattern nehmen, das klingt genauso, da wollen
- 6:01wir natürlich auch wieder n bisschen abgrenzen, natürlich
- 6:04gucken wo man das gut verwenden kann und wo halt nicht
- 6:06beispielsweise ne, das wär jetzt so der Fahrplan.
- 6:10Ja. Ja, es ist eigentlich auch n
- 6:12guter Punkt, das zu unterscheiden ist manchmal halt
- 6:15wirklich nicht so einfach, also gerade wenn du jetzt dir
- 6:17verschiedene Struktur Muster anguckst, also pattern aus dem
- 6:21Strukturenbereich, sag ich mal, wir hatten ja zum Beispiel
- 6:24Adapter Pattern schon ne und da ist halt wirklich die Frage OK,
- 6:28wo ist denn jetzt der Unterschied oder wann nehm ich
- 6:31was und sowas könnten wir ja auch mal n bisschen beleuchten
- 6:33heute, weil das ist halt wirklich ne gute Frage, das ist
- 6:36nicht so Occomon ist nicht dein Ernst.
- 6:38Das ist was ja doch sag mal das ist nicht dein Ernst.
- 6:40Das war ich sehr okay. Ich weiß es gar nicht.
- 6:44Ist n No Brander, ist n no Brander genau, aber das, also
- 6:49das muss man halt sich wirklich, da gibt es halt kleine aber
- 6:52feine Unterschiede, wie man so schön sagt und da da möchte ich
- 6:55dann gerne, erinner mich dran, dass wir da später noch drüber
- 6:57reden, aber kommen wir erstmal zum neuen Pattern, was wir heute
- 7:03besprechen und zwar das Bridge Pattern, also wir lassen das
- 7:06Adapter Pattern noch mal n bisschen beiseite.
- 7:09Und ich würd sagen, wir starten einfach wieder mit ganz
- 7:11klassischen Analogien. Und zwar ich finde, wir sind es
- 7:16unseren Zuhörern und Zuhörern, Zuhörerinnen und Zuhörern so
- 7:22einfach schuldig, dass wir auch wieder n bisschen in den Bereich
- 7:24des Essens gehen. Also das ist einfach unser
- 7:27Markenzeichen in dieser Reihe und das sollten wir auch tun.
- 7:30Bei den Pattern wird es nur schwierig, es direkt auf
- 7:32Lebensmittel zu Münzen, sag ich mal.
- 7:35Deswegen nehmen wir einfach mal n Restaurant ja und?
- 7:39Ich stell mir das jetzt gerade mal so vor.
- 7:41Wir beide, Fabi, wir gehen jetzt mal so richtig schön essen.
- 7:44Ja also wir haben hier schick aus, das ist jetzt einfach n
- 7:48Grund zu feiern und ich führ dich jetzt mal so richtig schick
- 7:50aus wir gehen essen und wir setzen uns an Tisch und ein
- 7:57Kellner kommt und fragt was wir denn gerne trinken wollen was
- 8:01wir essen wollen also er nimmt halt die Bestellung auf und
- 8:05jetzt fragt man sich ja OK. Wieso kommt da eigentlich n
- 8:10Kellner? Also warum kann ich nicht
- 8:14einfach direkt in die Küche gehen und dem Koch oder der
- 8:16Köchin sagen was ich haben möchte und dann soll die Person
- 8:19mir das zubereiten. Ja und das ist nämlich genau das
- 8:23Ding, dass man ja ne Art Brücke baut zur Küche über den Kellner
- 8:28oder die Kellnerin und da genau und über die Brücke auf
- 8:33huckepack Nein denn. Für dich soll ja quasi
- 8:40unabhängig von der Küche sein, wie ich bestelle.
- 8:45Ne also der Ablauf ist doch immer das gleiche, egal welchem
- 8:48Restaurant du bist. Ja, also es gibt sag ich mal so
- 8:52regelt oder sag ich mal. Im Kern ist es das gleiche,
- 8:55vielleicht ist es mal koordinierter, mal chaotischer,
- 8:58mal witziger, mal n bisschen gehobener, wie auch immer, ja,
- 9:02aber im Kern ist es ja das gleiche, ich möchte was zu essen
- 9:05haben und ich möchte was zu trinken haben und das wird.
- 9:07Bei dem Kellner oder der Kellnerin bestellt.
- 9:10Diese Person geht in die Küche und übermittelt deine Bestellung
- 9:14entsprechend dem Essen was da ist sag ich mal.
- 9:20Machen wir es noch n bisschen konkreter, ich nehm eine Nummer
- 9:24ja ich sag ich mir, ich hätte gern zu essen, hätte ich gern
- 9:27die Nummer 5 und der Kellner sagt OK und sagt in der Küche
- 9:33einmal Nummer 5 bitte. Jetzt ist Nummer 5 natürlich
- 9:36auch in jedem Restaurant was anderes.
- 9:38Ja keine Ahnung in in so nem Brauhaus ist es Schnitzel
- 9:43irgendwas und beim Italiener ist es jetzt keine Ahnung Spaghetti
- 9:48carbonara danke ich weiß du kennst dich aus mit den Nummern
- 9:53bei Italienern, denn das ist die 5 ist immer was Spaghetti und da
- 9:58sieht man ja schon ich brauch ja irgendwie.
- 10:01Eine Instanz oder ein Muster? Was mir genau das ermöglicht,
- 10:05und zwar ich kann unabhängig von der Küche bestellen.
- 10:11Ja, also dieser Ablauf ist immer gleich und die Küche kann
- 10:16unabhängig von dem wie ich bestelle, einfach das Essen
- 10:19zubereiten und ich habe halt ne Brücke dazwischen, die dafür
- 10:23sorgt, dass beides zusammenpasst.
- 10:26Ja, aber ich habe ja nicht. Und jetzt wird es n bisschen
- 10:29konkreter, warum das Pattern existiert.
- 10:31Ich brauche ja nicht einen Kellner, ja, der sagt, Ich bin
- 10:36ein italienische Küche Kellner oder ich bin ein Brauhaus
- 10:41Kellner oder ich bin weiß denk dir noch was aus sondern es ist
- 10:45n Kellner oder ne Kellnerin die das macht ja die dann quasi
- 10:50dafür sorgt, dass beides zusammenpasst.
- 10:52Anders gesagt, du gehst bestellst beim Kellner zum
- 10:55Beispiel auf Deutsch in jeder, in jedem Plan jemand noch mal
- 10:59sprachen um n weiteres Beispiel zu geben, so in der Küche, das
- 11:03ist jetzt so richtig richtig n richtig wahnsinniger Italiener,
- 11:06so wie jeder sich das vorstellt, dass jeder dann nur noch
- 11:08italienisch spricht, ja dann kannst du ja gar nicht in die
- 11:10Küche gehen und bestellen, vielleicht so mit n bisschen
- 11:13Handzeichen oder so ne, aber das war es dann auch schon.
- 11:18Und genau deswegen sagt man, um nicht zu viel Abhängigkeit zu
- 11:22haben, zu viel Kopplung oder zu viel Implementierung eines
- 11:25Kellners, um es konkreter zu machen, trenne ich jetzt genau
- 11:30diese beiden Sachen und zwar Implementierung und Abstraktion.
- 11:33Genau. Ich find n anderes Beispiel um
- 11:37um jetzt noch mal ganz kurz vorm Essen um noch mal n bisschen
- 11:40technischer zu werden ist. Für mich so n so n so n Beispiel
- 11:43was was irgendwie total auf der Hand liegt.
- 11:46So ne Universalfernbedienung weißt du, du hast
- 11:48Universalfernbedienung, kannst damit rein theoretisch sagen wir
- 11:52mal n Fernseher bedienen, Radio bedienen, ne Soundanlage
- 11:54bedienen, du kannst damit halt irgendwie alles bedienen,
- 11:56beispielsweise ne und bist jetzt aber nicht dafür angewiesen,
- 12:00dass du sagst, du hast jetzt eine Fernbedienung für den TV,
- 12:03eine Fernbedienung für n fürs Radio, eine Fernbedienung für
- 12:05die Soundanlage, das ist tatsächlich sogar eher Realität,
- 12:09aber. So rein theoretisch hast du halt
- 12:12eben nicht wieder so ne klassenexplosion, dass du sagst,
- 12:14du brauchst jetzt für quasi die die Klasse Fernbedienung für TV,
- 12:19Fernbedienung für Radio, Fernbedienung für soundanal,
- 12:21Kellner für italienisches Restaurant, Kellner für
- 12:24japanisches Restaurant, Kellner für was auch immer für n
- 12:27Restaurant ne. Also du brauchst halt nicht
- 12:28diese ganzen wenn wir jetzt auf Klassenebene gehen, brauchst du
- 12:31nicht diese ganzen Klassen, sondern du brauchst n Kellner.
- 12:34Du brauchst n Restaurant so nach dem Motto Ne.
- 12:36Also du hast natürlich dann verschiedene Implementierungen
- 12:38fürs Restaurant in dem Fall. Aber du hast halt.
- 12:40Eben diesen Kellner weißt du, und das ist halt die Bridge.
- 12:45Dann wie du meintest ne zwischen dem Restaurant und dem dem
- 12:48Kunden oder der Kundin und ich find es jetzt interessant, weil
- 12:52wir hatten ja so n bisschen gesagt, so ey, ich weiß nicht,
- 12:55wir hatten ja die letztens das decorator Pattern ne und da ging
- 12:59es ja auch darum so, ja. Klassenexplosion vermeiden jetzt
- 13:02ist das ja auch wieder irgendwie ne Art und Weise
- 13:04klassenexplosion zu vermeiden, ne, da könnte man sich ja
- 13:07vielleicht überlegen, so ist das jetzt nicht irgendwie das
- 13:11gleiche, aber am Ende ist es halt doch wieder was anderes,
- 13:14ne, also es sind halt. Es wird halt für verschiedene
- 13:18Dinge genutzt, weil das decorator Pattern beispielsweise
- 13:22ist ja dafür da, um einem Objekt neue Fähigkeiten zu geben, ohne
- 13:26ne Klasse zu verändern. Das hatten wir ja gesagt, ne,
- 13:28dass du immer ne neue Fähigkeit theoretisch noch hinzufügen
- 13:31kannst. Also weiter dekorieren kannst.
- 13:33Das heißt die Klasse wird sozusagen also das Objekt einer
- 13:37Klasse wird halt mächtiger und bei einer Bridge ist es halt
- 13:40eben so, dass du halt eben einfach beide Seiten voneinander
- 13:43trennst. Also du hast 2 Seiten.
- 13:45Die du unabhängig voneinander entwickeln kannst.
- 13:47Also wie du ja auch schon meintest, du könntest ja aus der
- 13:50Küche auf einmal aus der italienischen Küche auf einmal
- 13:53ne griechische Küche machen und der Kellner könnte der gleiche
- 13:56bleiben, ohne dass man sozusagen also den du musst den Kellner
- 13:59nicht verändern kannst, aber die Küche verändern.
- 14:00Du kannst neuen Kellner einstellen, die Küche kann aber
- 14:03die gleiche bleiben. Das heißt ganz genau.
- 14:05Bei dem einen trennst du halt wie du so schön meintest, die
- 14:08Implementierung von der Abstraktion ne und?
- 14:12Das ist diese, die Bridge sozusagen.
- 14:13Und beim Decorator ist es halt so, dass du halt sagst, ja, ich
- 14:16möchte aber gerne einem Objekt immer mehr Funktionen
- 14:20hinzufügen. Am Ende vermeidet beides ne
- 14:22Klassenexplosion, wie wir ja auch in der anderen Folge gesagt
- 14:26haben. Aber und das ist ja das
- 14:28interessante, Es ist die sozusagen die, was man machen
- 14:34möchte, damit ist was ganz anderes und das jetzt auch mal
- 14:37zur letzten Design Pattern folge zu trennen, ne?
- 14:42Ja, ich kann auch direkt weitermachen, weil so Analogien
- 14:44da auch hilfreich sind. Wenn du jetzt, wir hatten ja
- 14:46auch schon das Adapterpad angesprochen, ich finde, wo man
- 14:48das auch mit der mit der Bridge gut auseinanderhalten kann, ist
- 14:52auch ein Beispiel, was einfach jeder kennt, so dieses typische
- 14:56Ich möchte mein Handy laden, ja und wie sieht das heutzutage
- 14:59aus? Du hast Netzteil was im Prinzip
- 15:03sagt. OK, mit mir kann man laden,
- 15:06sozusagen. Ja, also ich steck mich in die
- 15:08Steckdose und ich sorg dafür, dass ich n Gerät lade.
- 15:12So jetzt brauchst du aber ne Brücke um dein Gerät mit dem
- 15:15Netzteil zu verbinden und genau das ist ja heutzutage Gott sei
- 15:20Dank auch unabhängig, also quasi getrennt vom Netzteil.
- 15:26Es ist ja nicht mehr so, dass n festes Kabel an dem Netzteil
- 15:30ist, sondern. In der Regel beim Handy sag ich
- 15:32mal NUSBC Kabel. Ja, das heißt du steckst das in
- 15:36dein Netzteil, in dein Handy und du kannst dein Gerät laden.
- 15:39So jetzt ist es aber so, dass es ja unabhängig ist.
- 15:43Ne das Netzteil auf der einen Seite und das Kabel sozusagen
- 15:47was für deine Funktion jetzt sorgt sag ich mal.
- 15:50Du kannst das gleiche Netzteil nehmen aber NUSBC Kabel ran
- 15:54machen, vielleicht hast du auch noch alte Geräte, wie hießen sie
- 15:57alle Mini USB? Micro USB da gab es auch 1000
- 16:01Varianten, bis wir bei USBC waren, kannst du alle nehmen,
- 16:04rein ins Netzteil brauchst du nur das Gerät ne, also je
- 16:06nachdem welche Brücke du sozusagen brauchst am Ende ne.
- 16:10Aber das ist ja Lightning bei Apple, aber das also ja auf
- 16:13jeden Fall, aber das ist jetzt schon so n bisschen so, also das
- 16:16ist auf der einen Seite ist es ja also das was du beschreibst
- 16:18ist ja die Bridge der Bridgepart dabei, aber.
- 16:24Es gibt ja auch noch n Adapterpart dabei ne, weil du.
- 16:26Ja, das nicht dazu kommen. OK, weil wenn du jetzt zum
- 16:29Beispiel sagst, ich möchte das aber in die Steckdose stecken,
- 16:32ja und bin jetzt aber in einem anderen Land, dann hab ich gar
- 16:36nichts gekonnt, dann hab ich zwar meine meine unabhängigen
- 16:39Implementierungen sozusagen, aber ich kann nicht mehr den
- 16:41Strom nutzen, also brauch ich jetzt an der Stelle einen
- 16:44Adapter um. In die Steckdose wieder zu
- 16:47kommen? Ja, weil es gibt ja
- 16:49unterschiedliche Steckdosen. So, und da siehst du jetzt,
- 16:51welcher Teil davon ist. Adapter ne, der sorgt nur dafür,
- 16:55dass ich jetzt in meinem Urlaub, ich hab alles, also es ist alles
- 16:58entschieden meine Geräte, ich bin aber jetzt im Urlaub und
- 17:01merke so Oh verdammt in die Steckdose kann ich gar nicht
- 17:03verwenden ha ich kann aber zur Laufzeit während meines Urlaubs
- 17:07jetzt meinen Adapter verwenden und trotzdem die Steckdose
- 17:09verwenden und gleichzeitig die Kombination und die Brücke
- 17:12nutzen um. Jetzt mein Handy zu laden oder
- 17:15das Handy vom Partner, wenn der eine n iphone hat und der andere
- 17:19n Android und es gab halt noch nicht die gemeinsame USBC
- 17:22Schnittstelle. Ja also da sieht man ja denn
- 17:25quasi genau die Unterscheidung in dieser Analogie, was ist
- 17:29Adapter und was ist die Brücke? Ja, im Endeffekt.
- 17:32Zumindest so n Kabel finde ich kann man sich als Brücke auch
- 17:34ganz gut vorstellen. Das das stimmt wohl.
- 17:38Das ist quasi eine eine Kabelbrücke, aber im Endeffekt
- 17:42ist es ja so, wenn wir das zusammenfassen wollen, um das
- 17:45jetzt auch direkt vom Adapter abzugrenzen, ne bridge, ne Trend
- 17:50Dinge halt ne oder sagt lass uns mal Dinge trennen und flexibel
- 17:55kombinierbar machen, das ist ja im Endeffekt die Bridge ne und
- 18:00der Adapter sagt du hast 2 Dinge die nicht zusammenpassen.
- 18:03Na dann lass uns die doch mal so zusammen, dass es passt, dass es
- 18:07passt. Genau, genau.
- 18:10Und ich finde, und das ist noch mal n ganz interessanter Punkt
- 18:14dabei, wenn du sagst, du entwirfst eine Bridge, ne, dann
- 18:17ist das, dann kann man sich das vorstellen, dass man sagt, lass
- 18:22uns doch mal so n bisschen von, also du bist eher am Anfang
- 18:26eines Projektes, dass du sagst, wir bauen es von Anfang an so am
- 18:31besten. Um flexibel zu sein, ne, also
- 18:33das ist so ne. Ich sag mal Designentscheidung
- 18:36am Anfang ne wenn wir jetzt bei Software sind n Adapter ist halt
- 18:40eher dass du sagst OK es ist etwas wo du sagst Oh das passt
- 18:45nicht, lass uns n Adapter dazu bauen, das heißt das machst du
- 18:48eher dann am Ende weißt du, dass du sagst das eine planst du von
- 18:52vornherein. Oder sagen wir mal, in einer
- 18:55frühen Phase deiner Architektur und das Adapter Pattern, da
- 18:59sagst du OK, ich hab das System, ich hab das System, die müssen
- 19:03jetzt nachträglich irgendwie verbunden werden, also bauen wir
- 19:05n Adapter ne. Da hast du wieder die
- 19:08Urlaubsanalogie. Ja, du hast an alles gedacht, du
- 19:11hast den das Netzteil, du hast die Kabel ja das alles so im
- 19:14Vorfeld schön gekauft so mir kann nichts mehr passieren so
- 19:17und jetzt fliegst du in den Urlaub und denkst dir ach
- 19:19verdammt jetzt muss ich ja doch reagieren und jetzt brauch ich n
- 19:22Adapter. Weißt du, jetzt muss ich quasi,
- 19:24das ist ja nicht eingeplant gewesen vorher.
- 19:27Ja, das, was du gerade meintest, das finde ich, kann man daran
- 19:30jetzt auch wieder gut erkennen. Ja, auf jeden Fall.
- 19:33Oh mein Gott, so eine Steckdose. Ich hab noch nie gesehen und er
- 19:37hat irgendwas basteln. Genau nach Hause rennen, aber.
- 19:43Nee, aber da gibt es so n bisschen off topic.
- 19:46Es gibt auch richtig geile Reisesets für Steckdosenadapter,
- 19:50so wo einfach weißt du, da hast du ein so n Ding und kannst da
- 19:53sowieso n Transformer alles umbauen und du kommst gefühlt
- 19:56auf jede Steckdose dieser Welt. Das ist gerade für Backpacking
- 20:00und so ziemlich geil, klingt n bisschen nach Kurzschluss für
- 20:03mich hat bis jetzt toi toi toi häufiger Kost, hat immer gut
- 20:08funktioniert ah das ist gut, OK. Auf jeden.
- 20:14Auf jeden Fall freut mich auf jeden Fall, dass das gut
- 20:17funktioniert, dass ich auch hier so dass du noch keinen Schock
- 20:21bekommen hast. Ja, auf jeden Fall.
- 20:24Genau das ist das, ich find, das ist ne sehr sehr gute Abgrenzung
- 20:27zum Adapter pattern, weil ich finde gerade wenn du also gerade
- 20:32wenn man jetzt zum Beispiel diese Analogie zum Beispiel mit
- 20:34der Fernbedienung nimmt oder auch mit dem Kellner, klingt das
- 20:37schon alles irgendwie so n bisschen wie n Adapter, aber man
- 20:40sieht halt doch, OK, es ist halt eben nicht einfach ein Adapter,
- 20:43sondern es ist halt, es ist halt für was anderes da ne und?
- 20:48Wie gesagt, ich meinte ja schon man, also es ist extra dafür um
- 20:52diese um so Systeme zu trennen. Ne in dem Fall wie gesagt ist es
- 20:55austauschbar, du kannst das eine System ohne das andere
- 20:59entwickeln, unabhängig voneinander wie gesagt Küche
- 21:01Kellner kannst aber auch n weiß ich nicht wenn du ne
- 21:05universalfernbedienung hast wie ich meinte kannst du halt auch
- 21:09noch in 10 Jahren zum Beispiel NTV benutzen weil ich sag mal
- 21:12irgendwie die ein und ausschalttaste ist irgendwie
- 21:15immer noch gegeben. Und wenn wir uns jetzt noch mal
- 21:20so ein bisschen die Struktur angucken, wir hatten ja gesagt,
- 21:22Abstraktion, ne, die Abstraktion wäre ja in meiner Analogie zum
- 21:26Beispiel die Fernbedienung in deiner Analogie, dann der
- 21:28Kellner beispielsweise ne, das heißt, der weiß, was getan
- 21:31werden muss, ne. Also in dieser Abstraktionsebene
- 21:34zum Beispiel gerät an und ausschalten oder zum Beispiel
- 21:37Nummer 5 bestellen, ne so und benutzt halt eben ein Interface
- 21:43was? Quasi entweder also sagen wir
- 21:46mal das die Fernbedienung benutzen Interface was das Gerät
- 21:49kennt, also zum Beispiel sowas wie ein und ausschalten als
- 21:52Interface oder halt eben der Kellner geht halt eben auch zur
- 21:57Küche ne und benutzt das Interface ich sag mal.
- 22:01Die. Speisekarte ne.
- 22:02Also Nummer 5 ist halt eben dann Spaghetti carbonara oder was
- 22:04anderes was ihr meint und genau so kann man halt eben sagen, wir
- 22:09können halt. Neue Geräte hinzufügen oder
- 22:12entfernen und es funktioniert alles noch ohne Probleme und
- 22:15wenn wir das jetzt ganze noch mal so n bisschen auf Code
- 22:18ebene, also was also wir haben ja quasi so verschiedene
- 22:20vielleicht Klassen die wir dann brauchen, dafür hast du mal ne
- 22:24kleine Erklärung für wie man das Ganze jetzt so theoretisch
- 22:28aufbauen. Können ja.
- 22:29Also wenn wir jetzt quasi dein Fernbedienungsbeispiel nehmen,
- 22:33also bei den Bridge Pattern unterscheidet man quasi immer.
- 22:36Struction und Implementation, also die Abstraktion von der
- 22:39Implementierung, ne, dass du beides unabhängig wie wir ja
- 22:42gesagt hatten, behandeln kannst und weiterentwickeln kannst.
- 22:46Und das wäre ja in dem Fall, dass du sagst, die Abstraktion
- 22:50ist jetzt irgendwo meine Fernbedienung.
- 22:52Ja und die Implementierung ist mein Gerät, also mein
- 22:55spezifisches Gerät, das ist das TV Radio was du meintest.
- 22:59Ja und? Das heißt, die Fernbedienung,
- 23:02die weiß, was getan werden soll. Zum Beispiel Gerät ein und
- 23:05ausschalten. Machen wir es mal simpel, kannst
- 23:07du jetzt auch noch sagen, lauter, leiser würde jetzt auch
- 23:10mappen. Ja, und diese Abstraktion
- 23:14benutzt quasi dann ein Geräte Interface ja, aber ohne wirklich
- 23:19zu wissen für welches Gerät das ist.
- 23:22Ich komm gleich dann noch mal spezifischer dazu.
- 23:23Ja, und um das abzuschließen, die Implementierung ist im
- 23:27Prinzip. Wie ist das technisch gemacht?
- 23:29Das ist dann wirklich die technische Umsetzung.
- 23:32Ja, von deinem Fernseher, also das der spezifische Fernseher
- 23:36zum Beispiel auch weiß ja was was muss denn passieren, damit
- 23:39ich eingeschaltet werde, was muss denn passieren, damit ich
- 23:41ausgeschaltet werde, wie kann man mich leiser oder lauter
- 23:44machen und das hat halt den Vorteil du kannst jetzt Geräte
- 23:49entwickeln, guck mal hier wir haben n neuen Fernseher, das ist
- 23:51unser neuestes Modell, richtig klasse.
- 23:54Und du kannst auch Fernbedienungen
- 23:55weiterentwickeln, sozusagen. Ja unabhängig voneinander.
- 23:58Guck mal hier, die Fernbedienung ist aber richtig schön jetzt und
- 24:01die hat übrigens n Knopf weniger.
- 24:03Ja, aber heutzutage ist ein Knopf weniger immer besser,
- 24:06früher konnte es gar nicht genug sein.
- 24:08Kennst du noch diese Fernbedienung wo einfach 1000
- 24:10knöpfe drauf sind und man sich so dachte Oh ja, guck dir meine
- 24:13Fernbedienung an, die ist krass, oder?
- 24:15Ja ja dann zeig mir mal wo man leiser und lauter macht ah ich
- 24:19muss suchen kurz suchen. Weißt du, was ich richtig
- 24:21scheiße an meiner Fernbedienung finde?
- 24:23So, ich hab ja n Fernseher so, da hast du dann irgendwie
- 24:25Streamingdienste drauf. Ne so und jetzt ist da n Play
- 24:29Button drauf und n vorspul Button und n Pause Button.
- 24:33Aber der zählt dafür nicht ne. Man könnte sich ja vielleicht
- 24:35denken, ey, ich meine Streamingdienste steuern, aber
- 24:39Pustekuchen, das ganze. Ja.
- 24:42Ich weiß aber nicht, wofür es dann ist.
- 24:45Ah, das ist für Rascha ja nur die Frage.
- 24:47Ne gute Frage für für den Videorekord.
- 24:52VHS Ja, bestes Gerät. Ah stark OK, kommen wir zurück
- 24:57zur Implementierung, das sieht dann so aus, dass du dann quasi
- 25:00sagst, OK, wenn jetzt meine Abstraktion ein Geräteinterface
- 25:06benötigt ne ohne zu wissen, damit man halt nicht genau den
- 25:09Typ wissen muss. Ja also meine Fernbedienung
- 25:12heißt ich brauch n Interface wieso oft bei dem Pattern?
- 25:15Ich brauch erstmal n Interface und zwar n Geräteinterface das
- 25:18nenn ich dann zum Beispiel Interface Geräte.
- 25:21Und sag ja, wie soll das Interface aussehen?
- 25:24Na ja, ich möchte jetzt einschalten können, ich möchte
- 25:26ausschalten können, lauter und leiser, das sind so 4 Funktionen
- 25:30ganz easy erstmal ja OK und ich entwickel so jetzt quasi an der
- 25:34Funktion meiner Fernbedienung, also wie meine Fernbedienung
- 25:37später aussehen soll, ne beziehungsweise was sie
- 25:41unterstützen soll was Geräte können soll um es mal so
- 25:45bisschen abstrakter zu sagen ja. Und gleichzeitig kann ja jetzt
- 25:49jemand anfangen und sagen, ja, OKOK, ich baue jetzt, ich baue
- 25:52jetzt dieses Gerät. Ja, wir haben jetzt per
- 25:54Interface festgelegt, was das können soll und ich implementier
- 25:58jetzt gerät und bau dir n richtig schönen Fernseher.
- 26:01Ja. So n nagelneuer.
- 26:04Wie groß sind die mittlerweile? Ich bin da nicht so 238000 Zoll
- 26:09238 Zoll. 1000, bitte. Und ich weiß ja, was der können
- 26:17muss. Also wichtig ist einschalten,
- 26:19ausschalten, lauter, leiser. Also das sind so die 4
- 26:21Funktionen jetzt ja und gleichzeitig kann aber Person x
- 26:25aber auch noch sagen ja warte mal, aber ich glaube n Radio wär
- 26:28jetzt auch geil mit den Funktionen ja also jetzt mach
- 26:30ich noch n zweites Gerät was gar nichts mit dem ersten zu tun
- 26:33hat, n Radio halt ja also wir sind jetzt halt nur auf der
- 26:37Tonspur und einschalten ausschalten leiser lauter Krieg
- 26:42ich hin mach ich ja. Das ist denn dein Radio?
- 26:45Um diesen Podcast hier zu hören, quasi und im Prinzip nutzen
- 26:51beide das gleiche Interface, Geräte oder Gerät ist ja nicht
- 26:54mehr Zeit, gerät wäre eigentlich korrekt und dann kannst du das
- 26:59implementieren und dann hast du im Prinzip von, also der
- 27:03Abstraktionsebene. Brauchst du ja natürlich auch ne
- 27:07Implementierung. Ja, weil ich meinte ja du kannst
- 27:09unabhängig deine Fernbedienung implementieren, das heißt du
- 27:12brauchst natürlich auch ne Implementierung deiner
- 27:13Fernbedienung und da kommt jetzt der Clou dabei, dass du sagst
- 27:18die hält jetzt ne Referenz zu einem Gerät, was definiert ist.
- 27:23Ja, das heißt die Fernbedienung hält eine Instanz eines Gerätes,
- 27:28was? Was ja abstrakt im Sinne des
- 27:31Interfaces ist. Das heißt, die Fernbedienung
- 27:33weiß eigentlich gar nicht, welches Gerät das ist, sondern
- 27:36einfach nur OK. Du bist n Gerät und ich kann
- 27:39dich einschalten, ausschalten, lauter und leiser machen und das
- 27:42implementier ich da drin jetzt genau, dass ich sage Funktion
- 27:49mach an nenn ich sie jetzt mal oder mach auf und da sag ich
- 27:52dann OK gerät und Ruf die Funktion einschalten von Gerät
- 27:57auf dann ist mir egal. Wie das passiert?
- 28:00Mir ist egal, welches Gerät das ist aber meine Fernbedienung,
- 28:03die ich gerade entwickel wird auf jeden Fall die
- 28:06Einschaltfunktion des Gerätes bedienen.
- 28:08Wenn ich sage mach an Knopf, mach an so ne oder bei dir
- 28:13beispielsweise Play auf deiner Fernbedienung, ja ruft ne
- 28:18Funktion auf die einfach gar nichts macht, scheinbar ja, die
- 28:20ist einfach leer implementiert. Richtig.
- 28:23Ja, im Endeffekt. Da ist ein to do drin, das ist
- 28:25ein to do implement to do. Bald machen wir das im nächsten
- 28:32Sprint. Aber im Ende genau so sieht das
- 28:34dann aus, am Ende ja. Also du hast quasi ein
- 28:37Interface, das Gerät. Du hast halt Implementierung von
- 28:40Geräten, also von einem Gerät was man halt gerne haben möchte
- 28:44und du hast halt eben diese Fernbedienung, die halt wie du
- 28:46meintest eine Referenz auf dem Gerät hat, sodass man dann sagen
- 28:49kann, ey, ich kann mir irgendwie eine Fernbedienung anlegen und
- 28:51dann da zum Beispiel diese Referenz auf.
- 28:53Reingeben zum Beispiel. Ja, ich möchte ne neue
- 28:55Fernbedienung erstellen für ein TV gerät oder für ein Radiogerät
- 28:59und dann kannst du halt einfach nur sagen Fernbedienung a macht
- 29:03halt, ruft Halt an auf und Fernbedienung B ruft auch an auf
- 29:07und dann werden halt die entsprechenden Geräte.
- 29:10B. Ruft die an, fängt einfach deine
- 29:15Fernbedienung an zu klingeln, aber.
- 29:18Ja, aber das ist auf jeden Fall so technisch das, was man
- 29:21theoretisch so dafür braucht, um halt dieses Bridge Pattern halt
- 29:26herzustellen, ne oder oder zu zu basteln sag ich jetzt mal ne.
- 29:29Genau. Und den entscheidenden Punkt
- 29:31hast du ja genannt, dass man im Prinzip dann dieser
- 29:33Fernbedienung im Konstruktor üblicherweise das Gerät mitgibt.
- 29:39Ja, dass du sagst, du bist jetzt eine Fernbedienung mit dem Gerät
- 29:44XY genau die Fernbedienung. Intern weiß nicht, welches Gerät
- 29:48das ist, aber ich kann es von außen vorgeben.
- 29:50Das ist ja der entscheidende Punkt.
- 29:52Ich kann ja jetzt beide unabhängig implementierten Dinge
- 29:57nenn ich es mal ganz abstrakt, unser Gerät und unsere
- 30:00Fernbedienung kombinieren und sagen, dadurch bist du jetzt ne
- 30:05TV Fernbedienung, so könnt ich jetzt die Variable zum Beispiel
- 30:07nennen, hab aber halt nicht diese klassenexplosion ich muss
- 30:11halt nicht sagen Oh verdammt ich brauch jetzt ne TV
- 30:14Fernbedienung, ich brauch ne radiofernbedienung ich brauch.
- 30:17Weiß ich was ja für ne Weckerfernbedienung kennt man
- 30:22ganz klassisch ja und das ist halt der Vorteil, dass ich das
- 30:26kombinieren kann, dann am Ende über ne gemeinsame Definition
- 30:30eines Interfaces. Genau.
- 30:31Und das Schöne ist halt, du kannst halt wie gesagt beide
- 30:34Systeme unabhängig voneinander weiterentwickeln.
- 30:37Wenn wir jetzt noch mal wirklich explizite Beispiele nehmen, ne,
- 30:40also zum Beispiel sowas wie dass du.
- 30:43Ne Datenbank austauschbar halten kannst ne.
- 30:46Also angenommen du hast heute irgendwie ne my SQL Datenbank,
- 30:50morgen nimmst du ne Post SQL Datenbank oder ne SQ lite oder
- 30:54sowas ne und du hast halt keine Lust zu sagen ich möchte jetzt
- 31:02aber überall irgendwie meinem Code diese SQL Unterschiede
- 31:05anfassen weil es ist ja so syntaktisch und immer so n
- 31:07bisschen was anderes ne wie du dann eben diese Datenbank
- 31:11queries an der Stelle machst. Und da kann es dann zum Beispiel
- 31:14helfen, einfach ne Bridge zu nutzen.
- 31:15Ne, das heißt du hast halt diese Abstraktion, ne diese Database
- 31:18connection und halt eben bestimmte Implementierung dieser
- 31:22Database connection, also was wie ne my SQL connection,
- 31:25postress connection oder nasculite connection ne und dann
- 31:32hast du im Endeffekt also diese Geschäftslogik.
- 31:36Die du hast spricht dann wirklich nur mit der Database
- 31:39connection. Also das ist jetzt genau dieses
- 31:41dieses Beispiel, ne, dass man wie auch bei einer
- 31:44Fernbedienung, wo man dann ein Gerät reingibt hat, man jetzt
- 31:47zum Beispiel dann am Ende ne Database connection, wo du also
- 31:52ne ne, also ne connection zu deiner Datenbank, die du halt
- 31:55instanzierst die du ansprechen kannst, ne, also sagen wir mal
- 31:58dein ich sag mal dein Database bridge ne wo du am Ende sagst OK
- 32:03aber explizit das in Anführungsstrichen gerät was du
- 32:07dieser Bridge mitgibst ne ist dann am Ende zum Beispiel dann
- 32:11eben die My SQL Connection oder halt ne andere Connection ne
- 32:16und? Na ja, das ist natürlich n
- 32:18super. Klassisches Beispiel ne wo man
- 32:20das halt in der Regel sehr oft macht, sag ich mal, weil wie du
- 32:25schon meintest, wenn ich die Datenbank austauschen möchte,
- 32:27soll das ja nicht meine restliche Software beeinflussen,
- 32:29sondern ich hab halt wirklich diese Bridge.
- 32:32Und sag OK, ich hab ne Art Service ne ja den verwende ich,
- 32:36das ist meine Business Logik wie ja füge was hinzu, lösche was ja
- 32:41diese typischen Crute Befehle dann am Ende gib mir alles und.
- 32:45Bitte gib mir alles von dem Table.
- 32:47In der Regel immer erstmal alles.
- 32:49Gib mir erstmal alles und dann ist mir ja egal welche Datenbank
- 32:54da drunter liegt und wenn die ausgetauscht werden muss im
- 32:56Projekt aus gründen warum auch immer ne.
- 32:59Dann wär es ja natürlich toll, wenn nichts davon beeinflusst
- 33:02ist. Abseits der Implementierung
- 33:04dieser Datenbank sozusagen. Und genau das ist n super
- 33:08Anwendungsbeispiel. Genau, also dann hast du halt
- 33:11diese Brücke wieder und dann rennt einer über die.
- 33:12Brücke ja, warte ich hol die Daten nicht mehr gleich zurück,
- 33:14so weißt du und rennt halt über die Brücke, was auf der anderen
- 33:17Seite ist, ist uns egal. Sozusagen ne Kleine in
- 33:21Anführungsstrichen Blackbox, aber das Schöne ist halt wie
- 33:23gesagt, du kannst halt eben das System Datenbank unabhängig
- 33:26voneinander entwickeln, kannst sagen OK ich ich.
- 33:29Nee, wir müssen doch was anderes nehmen.
- 33:31Das passt irgendwie nicht mehr aus bestimmten Gründen.
- 33:33Oder du entwickelst halt eben deine Business Logik auf der
- 33:36anderen Seite weiter und sagst na ja, aber an der Stelle wollen
- 33:39wir jetzt nicht select all haben, sondern zum Beispiel was
- 33:41weiß ich, gib mir mal nur ne entsprechende Teilmenge der
- 33:46Table und dann kannst du das Halt weiterentwickeln und diese
- 33:48Bridge sorgt dafür, dass beides unabhängig voneinander
- 33:51entwickelt werden kann, ohne dass du halt jetzt wirklich
- 33:54sagen musst, ich fasse spezielle Implementierungen an der Stelle
- 33:57an. Und das ist halt das Schöne an
- 34:00der Stelle. Absolut.
- 34:03Ein anderes Beispiel, was mir da auch recht schnell einfällt, ist
- 34:07so typische. Anwendungsfälle, wo ich
- 34:10unterschiedliche Formate supporten möchte, also
- 34:14beispielsweise Videos oder oder Bilder.
- 34:17Ja, da gibt es ja verschiedenste Formate und gefühlt, wenn ich
- 34:22irgendwie in dem Bereich was mache, kann ich auch immer alles
- 34:24exportieren in die entsprechenden Formate, ne ah ja
- 34:28exportier mir mal jetzt bitte keine Ahnung, das Bild was ich
- 34:32hier gemalt hab, ja klar was willst du denn für n Format PNGJ
- 34:37Peg? Vielleicht sogar ne
- 34:39Vektorgrafik. Ja, also sag mir was du willst.
- 34:41Sag mir was du willst, so ne und da muss man sagen kann man ja
- 34:46auch wieder super das Bridge pattern ich wollt gerade Bilder
- 34:49sagen komplett falsch bridge pattern anwenden weil du sagen
- 34:55kannst OK ich implementiere jetzt ne Art Exporter Project
- 34:59Exporter oder Image Exporter ganz allgemein und der sorgt
- 35:04dafür, dass ich sagen kann, was soll denn ermöglicht werden.
- 35:08Ja, also was möchte ich denn exportieren?
- 35:10Wie soll das Aussehen und hab da so meine Logik drin von meiner
- 35:14inneren Anwendung sozusagen und von außen implementier ich dann
- 35:19sozusagen die das Exportieren an sich.
- 35:25Ja, also wie komme ich denn in das finale Dateiformat?
- 35:29Und das kann ich ja wieder, denn für alle möglichen machen.
- 35:32Ja, also was hatte ich gesagt, J Peg, von mir aus auch PDF oder
- 35:35sowas gibt es ja auch öfter mal, dass du sagst OK nee, ich möchte
- 35:38aber ne PDF jetzt daraus machen und dann habe ich so
- 35:41verschiedene Klassen die das implementieren.
- 35:44Und dem Exporter gebe ich jetzt quasi zum Beispiel über meine UI
- 35:48wähle ich aus, was ich haben möchte und er weiß dann im
- 35:51Endeffekt, welchen welche Implementierung er denn
- 35:54verwenden soll. Aber auf der, wenn man sich das
- 35:57jetzt vorstellt sowieso n wieso n Ablauf ne auf der rechten
- 36:01Seite habe ich jetzt quasi die exakte Implementierung wie
- 36:05exportiert werden soll, die Brücke dazwischen und links
- 36:09meine restliche Software und der da muss ja egal sein, welches
- 36:12Format am Ende ausgewählt wird. Soll das Gleiche passieren?
- 36:15Ja. Genau dafür kannst du in das
- 36:18Pattern halt auch nehmen, ne? Auf jeden Fall.
- 36:20Und ich find da sieht man auch schon ganz gut, wann man es halt
- 36:23zum Beispiel auch wirklich nicht unbedingt verwenden muss.
- 36:26Ne. Also wenn du jetzt wirklich
- 36:27sagst, so, du hast halt keine 2 unabhängigen Hierarchien
- 36:31voneinander, ne, also zum Beispiel jetzt mal jetzt noch
- 36:33mal auf das Datenbankbeispiel zurückgehen, wenn du sagst, ey
- 36:39du hast halt eben. Benutzt nur eine My SQL
- 36:42Datenbank beispielsweise es wird keine andere geben.
- 36:45Wir brauchen das ist felsenfest und mach es nicht komplizierter
- 36:50als es ist. Dann brauchst du an der Stelle
- 36:52keine Bridge unbedingt, dann kannst du halt rein theoretisch
- 36:55direkt sagen, OK ich schreibe auch meine SQL Queries in meinen
- 36:58Code richtig rein. Weil du sowieso weißt, du musst
- 37:02sie nicht mehr anpassen. Diese zum Beispiel diese Syntax
- 37:04der SQL Queries, die wird sich nicht verändern.
- 37:06Du brauchst also keine Bridge, die dafür sorgt, dass eben das
- 37:10einfach austauschbar ist. Ne und an der Stelle, dass dass
- 37:12du halt sagst, OK, ich kann jetzt zum Beispiel meine
- 37:14Datenbank unabhängig irgendwie weiterentwickeln, verändern,
- 37:17austauschen, wie auch immer, ne, dann brauchst du das zum
- 37:20Beispiel nicht. Ja, ich find es bei der
- 37:24Datenbank immer spannend. Weil, wie soll ich sagen, ich
- 37:32hatte jetzt noch nicht oft den Fall, dass ich wirklich
- 37:35grundlegend die Datenbank austausche, ne, aber sehr oft
- 37:41den Fall, dass ich trotzdem unterschiedliche
- 37:43Implementierungen brauche oder mindestens 2.
- 37:48Deswegen also diese diese Abstraktion an der Stelle oder
- 37:51das Bridgepad, dann ist halt einfach wirklich von Vorteil,
- 37:54allein schon wenn ich sage, ich möchte meine Software ja und das
- 37:58sollte immer der Fall sein, vernünftig abtesten ja, dann ist
- 38:02nämlich auch das Bridgepad dann hilfreich, um zum Beispiel zu
- 38:05sagen, na ja, aber ich kann ja auch ne Testdatenbank
- 38:08implementieren, die genau das macht, was ich jetzt in meinen
- 38:11Tests haben möchte und kann, aber weil ich ne Bridge.
- 38:15Implementiert habe die einfach verwenden sozusagen.
- 38:18Ist ja auch n Riesenvorteil in Sachen Testbarkeit.
- 38:21Du willst ja nicht in deinen Tests auf der echten Datenbank
- 38:24rumhacken, beispielsweise wenn du jetzt wieder ne harte
- 38:28Kopplung hast am Ende also deswegen also dieses Bridge
- 38:32Pattern oder oder allgemein Pattern, die wir besprechen
- 38:34helfen ja auch in solchen Fällen und nicht nur um.
- 38:38Mehrere Sachen zu unterstützen oder flexibel zu sein, ja sehr
- 38:42wichtig. Also ich finde gerade der
- 38:43Testgedanke ist halt auch immer eine Form, die ich bräuchte,
- 38:46dabei sozusagen oder eine Variante, wie man es jetzt
- 38:49nennen möchte. Ja, gerade wenn man zum Beispiel
- 38:51wirklich an den Punkt kommt, ich finde das Beispiel was du
- 38:53gebracht hast wirklich sehr sehr gut, weil wenn du jetzt zum
- 38:56Beispiel weil wenn du jetzt zum Beispiel sagst, und das ist
- 39:00immer ein gutes Anzeichen dafür, du überlegst dir, wie du etwas
- 39:03testen kannst, ne und merkst, es ist nicht gut testbar so.
- 39:08Dann und du dann zum Beispiel vielleicht so ein Pattern
- 39:10nimmst, um dann zu sagen, OK, jetzt kann ich es aber viel
- 39:13besser testen, ist es meiner Meinung nach auch auf jeden Fall
- 39:16ein sehr sehr gutes Anzeichen dafür, dass dein Code quasi
- 39:19improved ist. Ne, dass du sagst, ey warte mal,
- 39:22du hast jetzt etwas, also du nutzt zum Beispiel ein Pattern
- 39:25um halt die Testbarkeit zu verbessern, nicht unbedingt nur
- 39:28den Code an sich, aber die Testbarkeit zu verbessern, dann
- 39:32hat es auf jeden Fall was gebracht.
- 39:33Also es ist auf jeden Fall ein sehr sehr guter Punkt für nicht
- 39:35zu sagen, achtet auch. Nicht nur darauf, dass keine
- 39:39Ahnung man jetzt so Lehrbuch nach irgendwas verknüpfen kann
- 39:43oder so, sondern halt eben auch den Faktor Testbarkeit mit
- 39:46einzubeziehen. Ne?
- 39:48Ja, absolut, wirklich. Weil meistens ist es, wie du ja
- 39:50meintest n Indikator dafür, ob die Software besser wird oder
- 39:54auch robuster. Natürlich ne und sollten dann
- 39:58quasi die Unterscheidung oder die die unterschiedlichen
- 40:02Implementierungen doch auftreten, dann bist du halt
- 40:04drauf vorbereitet. In dem Moment, weil du schon,
- 40:07also anhand deiner Tests gesehen hast, ich bin in der Lage, das
- 40:11zu skalieren oder variabel zu halten beispielsweise ja,
- 40:15definitiv. Ich würd zum Beispiel noch
- 40:17sagen, wenn du jetzt also, wo man es jetzt vielleicht nicht
- 40:20unbedingt benötigt, wenn du jetzt zum Beispiel sagst, du
- 40:22hast irgendwie ne, du schreibst ne Software und du deine
- 40:25Software ist eigentlich relativ einfach Straight Forward, da ist
- 40:29jetzt nicht so viel rechts und links, du musst auf gar nicht so
- 40:32viel achten, das ist ne wirklich kleine Anwendung, das heißt?
- 40:35Die Einfachheit ist wichtiger als die Flexibilität an der
- 40:37Stelle, weil du die Flexibilität gar nicht brauchst.
- 40:42Dann ist es natürlich auch nicht unbedingt notwendig oder ratsam,
- 40:47das Bridge Pattern zu verwenden, weil du halt wie bei vielen
- 40:51Dingen, wenn du es nicht brauchst und trotzdem ein
- 40:54Pattern nutzt, hast du halt immer ein Overhead, ne, also.
- 40:57Von den entsprechenden Interfaces.
- 41:00Also du hast mehr Interfaces, logischerweise ne wie zum
- 41:02Beispiel das Gerät Interface oder halt höhere
- 41:05Abstraktionsebenen, die natürlich auch Code wieder
- 41:08komplexer machen. Ja ich also ich find es ist so n
- 41:12bisschen kleiner trade off, sorry du wolltest gerade noch
- 41:15was sagen, aber es ist so n kleiner trade off zwischen finde
- 41:18ich. Was brauchst du jetzt schon und
- 41:22was brauchst du in der Zukunft, um zu sagen, das brauch ich
- 41:25gerade nicht? Das brauch ich definitiv nicht
- 41:27in der Zukunft und ich muss mich quasi schon mal im Vorfeld
- 41:32darauf einstellen, dass ich das vielleicht noch brauche und mein
- 41:36Code flicks, also ich sag mal erweiterbar genug halte um sowas
- 41:42eventuell dann später nicht in einem riesen Refactoring umbauen
- 41:46zu müssen. Ja, aber das war auch genau das
- 41:49richtige Stichwort. Schon Refactoring angenommen,
- 41:53ich habe es am Anfang nicht auf dem Schirm gehabt, dass ich das
- 41:57zukünftig brauchen werde oder die Bedingungen haben sich so
- 41:59extrem geändert, dass es nicht absehbar war, ist das natürlich
- 42:02auch kein Weltuntergang, weil man kann ja refactor, man sollte
- 42:06Refactor und refactor ist auch n wichtiger Schritt in jedem
- 42:08Projekt, auch wenn viele das, ich sag es provokativ so und
- 42:12dann Teppich kern sagen, ja nee, keine Zeit für, aber genau das.
- 42:16Ist ja der Schritt, der dann, sag ich mal ansteht zu sagen, Na
- 42:19ja, aber jetzt mit unseren neuesten Erkenntnissen wissen
- 42:22wir, es wäre besser, jetzt auf zum Beispiel das Bridge Pattern
- 42:25zu setzen und wir haben es gerade alles gekoppelt, wir
- 42:29müssen uns jetzt Zeit nehmen, das umzubauen, man kann es ja
- 42:31umbauen, es ist ja nicht so, dass es für immer fest
- 42:33verdrahtet ist und du entweder das Projekt Wegschmeißt und neu
- 42:36machst mit dem Bridge Pattern oder es halt so lassen musst.
- 42:39So ist es ja nicht, ne, das stimmt.
- 42:42Und ich find den anderen Punkt auch gut, wenn Einfachheit oder
- 42:46sag ich mal dein Projekt an sich schon verlangt, dass du sowas
- 42:51gar nicht in Betracht ziehen sollst.
- 42:53Ne, dass du halt so spezifisch etwas implementierst, wo es
- 42:57einfach wirklich gar nicht sinnvoll ist, irgendwelche
- 43:01Flexibilität drin zu haben. Nehmen wir mal noch mal das
- 43:05Beispiel Datenbank. Ja also oder ne Anwendung n
- 43:09klassisches Backend mit einer Datenbankanbindung.
- 43:11Ja, das allein wie wir meinten mit der Testbarkeit, weil ich
- 43:15halt auch mit mit einer Datenbank arbeite bietet sich
- 43:17das schon an so das flexibel zu halten.
- 43:20OK gut würde ich sagen gover it wenn ich jetzt aber keine Ahnung
- 43:25ich bin jetzt n Embedded Entwickler und ich schreibe
- 43:28Software für ne ganz spezifische Mikrocontroller ja und?
- 43:32Welche Flexibilität möchte ich denn da jetzt haben, wenn ich
- 43:36wirklich auf dem Mikrocontroller arbeite?
- 43:39Also wirklich auf ne ganz spezifische Implementierung hin
- 43:42arbeite, dann kann man sich halt fragen, muss ich das jetzt
- 43:46machen, killt mir der Overhead nicht vielleicht sogar
- 43:50Performance am Ende und das sind halt genau die Unterscheidungen,
- 43:54ne also projektspezifisch zu unterscheiden macht das jetzt
- 43:57Sinn oder nicht? Ja find ich auch n sehr gutes.
- 44:02Beispiel aus dem Real Life, wie man so schön sagt, wo man dann
- 44:07das nicht braucht, vielleicht n Adapter später mal.
- 44:10Aber ja genau, Adapter löten dann was ich damit oder n
- 44:20anderes Beispiel ja wenn du irgendwie ne Software schreibst
- 44:23die auf mehreren Betriebssystemen laufen soll.
- 44:26Das das ist auch schon so n Indikator wo du sagst na ja gut,
- 44:28ich werde ja Unterscheidung in dem Betriebssystem haben wie die
- 44:31das umsetzen möchte, aber eigentlich das Gleiche von denen
- 44:34abverlangen sozusagen. Dann hab ich schon wieder so vom
- 44:37Gedanken her wow, da macht das Sinn, ja oder in Frontends oder
- 44:42so ne App Entwicklung cross Plattform was es denn alles so
- 44:47gibt halt ne da da macht das alles Sinn aber es gibt halt
- 44:49auch Fälle und da geh ich absolut mit wenn Leute das sagen
- 44:52so. Ey, ganz ehrlich, dieses Projekt
- 44:55ist nur für diese eigene Plattform, wozu?
- 44:59Na, weißt du? Und ich find das ist halt wieder
- 45:01mal das Stichwort, weil es einfach wichtig ist, sich genau
- 45:04zu überlegen, wofür man eigentlich was codet und nicht
- 45:07einfach nur sagt Ey, ich hab hier mal gehört Bridgepattern
- 45:11ist voll geil, das müssen wir auf jeden Fall nehmen.
- 45:14Bringt nichts, wenn du es eigentlich gar nicht brauchst.
- 45:16Deswegen das ist halt das wichtige und deswegen ist es
- 45:19halt auch gut, dass wir auch diese ganzen Pattern vielleicht
- 45:22noch mal nicht nur also auch für uns sag ich jetzt mal auch
- 45:25einfach noch mal durchgehen, weil es einfach auch interessant
- 45:28ist, sich das noch mal in die Gedanken zu rufen, um zu sagen,
- 45:32OK das dieses Pattern gibt es und wann kann man diese solche
- 45:35Pattern eigentlich überhaupt benutzen und man sollte sie halt
- 45:39nur benutzen, wenn sie halt wirklich auch.
- 45:41Wichtig oder dringend sind ne, was nicht heißt, dass man sie
- 45:44nicht auch einfach mal implementieren kann, einfach so
- 45:46zum Spaß um es mal gemacht zu haben.
- 45:48Ne hatten wir auch schon mal gesagt ja ich find das ist auch
- 45:52n extrem guter Punkt, weil wir das glaub ich in der Community
- 45:55als Frage hatten wie man sich die ganzen Pattern denn merken
- 46:00kann und ob wir uns denn alle merken und da haben wir ja auch
- 46:05ehrlich und transparent geantwortet, so wie wir es hier
- 46:08auch sagen. Ja natürlich merkst du dir nicht
- 46:10alle. Ja, du hast irgendwann welche,
- 46:12die du vielleicht gerade im Projekt verwendest.
- 46:14Dann hast du die auf dem Schirm oder so Evergreens, die du halt
- 46:18schon wirklich oft verwendet hast, wie jetzt ne Factory
- 46:20beispielsweise in unserem Fall jetzt nur von uns gesprochen,
- 46:23die haben wir halt öfter schon mal verwendet, weil die oft cool
- 46:26kommt, sagt man so ne, aber es gibt du kannst dir natürlich
- 46:31nicht alle Pattern merken, also bin ich der Meinung und das ist
- 46:34auch völlig in Ordnung, wichtig ist aber sie.
- 46:37Mal zu verstehen und zu verinnerlichen, dass wenn ich
- 46:41wieder auf sie stoße, verstehe, warum sie da sind oder warum sie
- 46:45benötigt werden. Ja ja und ansonsten hört man
- 46:50entweder hier wieder in unsere Reihe rein oder es gibt halt
- 46:53auch coole Zusammenfassung im Netz dazu und dann frischt man
- 46:57das auf. Und dann ist gut.
- 46:58Genau. Dass und da noch mal so n
- 47:00bisschen den Druck rauszunehmen, weil wir angeschrieben wurden.
- 47:02Oh mein Gott, ich kann mir die alle gar nicht merken, so, ja.
- 47:06Nee, da ist es auf jeden Fall. Vielleicht implementiert man ja
- 47:08auch einfach mal n Pattern, ohne eigentlich genau zu wissen, wie
- 47:11das Pattern heißt, ne, also dass du jetzt wirklich sagst, ja
- 47:14klar, das ist jetzt das Bridge Pattern und das macht man, weil.
- 47:18ABCDE so, sondern wenn du einfach nur verstanden hast,
- 47:21wofür etwas da ist, kannst du es einfach anwenden, auch ohne dass
- 47:24du jetzt sagst, ja, das ist jetzt das und das Pattern und
- 47:26das macht das und das und das verwendet man da und da und da
- 47:28und da nicht so ne, dass man einfach so gesagt hat, die
- 47:31Intuition dafür bekommt das Halt zu machen und.
- 47:33Deswegen ja, weil du hast halt die Zielsetzung, du weißt ja,
- 47:35was du erreichen möchtest. Und dann?
- 47:38Sag ich mal. Ja, viele Wege führen nach Rom,
- 47:41so ne. Dann heißt es vielleicht nicht,
- 47:42dass du jetzt exakten Bridgepattern umgesetzt hast,
- 47:45aber du hast versucht, diese diese Vorteile, diese Benefits
- 47:48zu r coden sag ich mal ne ne und das ist ja auch der
- 47:52entscheidende Punkt am Ende. Ich glaub du jetzt den Bridge da
- 47:55ran, schreibst an deine Klassen oder nicht ja oder ob du die
- 47:58Factory jetzt Factory nennst oder nicht.
- 48:01Ja, ich glaub im alten Rom hieß es noch aquädukpattern, aber sag
- 48:04ich mal hergestellt ja. Oh Gott, auch hab ich auch
- 48:08gelesen es. Ist es ist schon spät.
- 48:10Ich glaub wir machen. Aber ich denke mir, dass ihr
- 48:12Angst jetzt auch das Fabi, das war der Moment, wo du jetzt
- 48:15gesagt hast, Schluss für heute. Deswegen vielen Dank für die
- 48:19heutige Folge. Es hat mir wieder sehr viel Spaß
- 48:20gemacht, waren auch hier coole Analogien bei schade, dass wir
- 48:25es nicht direkt auf Essen Münzen konnten, aber ich denke fairnuff
- 48:28wir waren nah dran Burger und genau einfach noch mal so n paar
- 48:33Lebensmittel nennen jetzt. Deswegen bleibt mir eigentlich
- 48:37nichts mehr weiter zu sagen, als die Frage zu stellen, wieso oft
- 48:40in unserer Reihe, liebe Zuhörerinnen, liebe Zuhörer,
- 48:43hast du schon mal das Bridge Pattern verwendet, wenn ja, wo
- 48:46und weshalb? Und was sind denn so deine
- 48:49Lieblingspattern, weil wir ja gerade gesagt haben, ja die
- 48:52Factory, die haben wir zum Beispiel öfter im Einsatz, die
- 48:54du häufig verwendest, Teile uns das gerne mit, schreib uns auf
- 48:58der Plattform deiner Wahl, du kannst uns auch ne Mail
- 49:00schreiben. Alle Links und die Mailadresse
- 49:03findest du wie immer in den Show Notes.
- 49:04Wir freuen uns auf Deine Nachricht, sind immer happy und
- 49:07Antworten auf jeden Fall und auch sehr, sehr gerne ansonsten,
- 49:11falls dir die Folge wieder gefallen hat, Empfiehl gerne den
- 49:13Podcast weiter 2 oder 3 Freunden, das wäre super, lass
- 49:17eine Bewertung da, falls du das noch nicht gemacht hast.
- 49:20Wenn du so richtig dir denkst, so Menschen, Jungs ihr seid der
- 49:23Hammer, ich möchte euch unterstützen, findest du auch
- 49:25einen Spenden Link in den Show Notes, das würde uns mega mega
- 49:28freuen. Dann vielen vielen Dank dafür.
- 49:30Simon auch noch mal hier noch mal vielen vielen Dank es
- 49:33doppelt hält besser wie man so schön sagt und deswegen wünsche
- 49:36ich euch eine schöne Woche bis dahin bis zum nächsten
- 49:39Donnerstag quasi habt eine schöne Zeit tschau tschau dann
- 49:42kommen wir uns. Gemeinsam besser.