Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Grundlagen der Programmierung: Entwurfsmuster

Viele Muster, viele Ähnlichkeiten: Abgrenzungen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Häufig gibt es für eine Problemstellung mehrere passende Muster. Welches sollten Sie dann verwenden, und warum? Antworten gibt dieses Video.
03:57

Transkript

Wenn Sie sich mehrere Entwurfsmuster so anschauen, dann werden Sie hie und da gewisse Ähnlichkeiten feststellen und manchmal ist auf den zweiten Blick noch nicht so recht zu erkennen, worin sich diese Muster eigentlich unterscheiden. Deshalb schauen wir uns in diesem Video genau das an, nämlich ähnliche Muster und ihre Unterschiede. Wir beginnen mit dem Adapter und der Fassade. Beide dienen dazu, dass man sie vor ein oder mehrere Objekte stellen kann und bei beiden sieht die Schnittstelle, die der Client zu sehen bekommt, irgendwie anders aus als die dieser Objekte. Der Unterschied liegt in der Intention der beiden Muster. Beim Adapter geht es darum, dass er eine Schnittstelle auf eine andere umsetzt. Das heißt, die Originalobjekte bieten eine andere Schnittstelle als die, die er Client erwartet und der Adapter übersetzt entsprechend. Es geht also nicht so sehr darum, ob die Schnittstelle dann einfacher oder komplexer wird, sondern in erster Linie, dass es die Schnittstelle ist, die der Client erwartet. Bei der Fassade hingegen ist die Zielrichtung tatsächlich eine komplexe Schnittstelle zu vereinfachen. Das heißt, der Client wäre zwar prinzipiell in der Lage die komplexere Schnittstelle anzusprechen, die Fassade nimmt ihm aber diese Arbeit ab und vereinfacht den Zugriff. Eine Fassade kann prinzipiell auch selbst einfache Geschäftslogik enthalten. Oft ist sie aber eher der Koordinator der Zugriffe auf die Dienste dahinter. Der interne Aufbau und die Komplexität des Adapters hingegen hängt primär davon ab, wie weit sich die beiden Schnittstellen unterscheiden, zwischen denen er zu vermitteln hat. Das kann von einem einfachen internen Weiterleiten bis zu komplexen und aufwendigen Transformationsprozessen gehen. Das ist also der Unterschied zwischen Adapter und Fassade. Kommen wir zum nächsten Pärchen, Erbauer und Fabrikmethode. Auch hier werfen wir zuerst einen Blick auf die Gemeinsamkeiten. Bei beiden geht es darum die Objekterzeugung zu kapseln, sodass also der Client sich nicht selbst um die Objekterzeugung kümmern muss. Außerdem kann der Client vom Typ des Objekts, das erzeugt wird, entkoppelt werden. Das heißt, der Client kennt zum Beispiel nur eine Schnittstelle und er bekommt eine Instanz irgendeiner Klasse, die diese Schnittstelle anbietet. Die konkrete Klasse muss er nicht kennen, darum kümmern sich Erbauer bzw. Fabrikmethode. Schließlich gibt es bei beiden Mustern die Möglichkeit, dass das Objekt validiert wird, bevor es tatsächlich an den Client ausgeliefert wird. Auf diese Weise kann abgesichert werden, dass der Client auch tatsächlich nur funktionsfähige Objekte bekommt. Wo liegen nun die Unterschiede? Beim Erbauer liegt der Fokus auf dem schrittweisen Erzeugungsprozess komplexer Objekte. Der Client wird sich also typischerweise erst mal ein Erbauer-Objekt holen. Dieses dann über mehrere aufeinanderfolgende Methodenaufrufe konfigurieren und sich schließlich das, nach diesen Vorgaben angefertigte Objekt, abholen. Der Erbauer ist also zuständig für die Erzeugung von Objekten, die in vielen Variationen existieren können und bei denen es oft auch viele optionale Attribute gibt. Die Fabrikmethode hingegen ist, wie der Namen auch schon andeutet, ein einziger Methodenaufruf. Der Client ruft einfach diese Methode auf, übergibt eventuell noch einen Parameter und bekommt sofort das passende Objekt zurückgeliefert. Hier geht es also primär darum, dass der Client nicht wissen muss, was für ein Objekt erzeugt wird und wo es herkommt. Im dritten Vergleich treffen nun Strategie und Schablonenmethode aufeinander. Die Gemeinsamkeit ist schnell genannt. Beide kapseln Algorithmen. Bei beiden geht es also darum, je nach Anforderung unterschiedliches Verhalten zur Verfügung zu stellen. Der erste Unterschied liegt hier in der Umsetzung. Bei der Strategie wird Komposition verwendet. Das heißt insbesondere, dass der Algorithmus auch zur Laufzeit ausgetauscht werden kann. Es wird hier eine Familie von Algorithmen definiert, die alle die gleiche Schnittstelle anbieten und dadurch sind sie untereinander komplett austauschbar, ohne dass der Client etwas davon wissen muss. Die Technik, die die Schablonenmethode nutzt, ist die Vererbung. Hier wird also statisch zur Entwicklungszeit festgelegt, wie der Algorithmus auszusehen hat. Die Struktur des Algorithmus wird in der Schablonenmethode vorgegeben und die Unterklassen können dann lediglich Anpassungen an einzelnen Schritten des Algorithmus vornehmen. Bei der Schablonenmethode bleibt der Algorithmus selbst also unverändert. Dagegen ist bei der Strategie zwar die Schnittstelle zum Algorithmus unverändert, die internen Abläufe können aber komplett unterschiedlich sein. Nun haben Sie also für einige Entwurfsmuster gesehen, worin ihre Gemeinsamkeiten liegen und worin sie sich unterscheiden.

Grundlagen der Programmierung: Entwurfsmuster

Erhalten Sie einen fundierten Einstieg in das Thema Entwurfsmuster (Design Patterns) und erfahren Sie, wie Sie Entwurfsmuster in objektorientierten Programmiersprechen umsetzen.

2 Std. 49 min (33 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!