Software Design Patterns

Der Entwurf einer Software, also die entstehende »Architektur«, entscheidet maßgeblich über die Software Qualität. Sogenannte Software Design Patterns, also Entwurfsmuster, bieten standardisierte Lösungen für Probleme bzw. Aufgaben. Wir stellen in diesem Artikel die Idee dahinter vor und stellen zum Einstieg in das Thema einige häufig auftretende vor.

Hilfe beim Software-Entwurf

Umfangreiche Software-Lösungen können nicht mehr »einfach so« implementiert werden. Ein grundlegender Schritt vorab ist der Software Entwurf. Das gilt nicht nur, wenn ein Team von Programmierern eine Software entwickelt. Auch wenn nur Sie eine Software entwickeln, also eine einzelne Person, ist ausreichende Planung vorab unerlässlich. Alles andere führt früher oder später zu unzulänglichem Design. Software, die nicht entworfen wurde, sondern gewachsen ist, lässt sich nicht gut erweitern.

Größere Änderungen bereiten Kopfschmerzen oder werden wegen vieler auftretender Seiteneffekte quasi unmöglich. Das führt zu viel Aufwand und vielen Fehlern. Bei unzureichender Planung oder einem lückenhaften Software Entwurf tritt nicht die Schokoladenseite der Software Entwicklung ans Tageslicht.

Ein weiterer Vorteil der standardisierten Muster ist auch, dass fremde Entwickler schneller in den Code einsteigen können. Dies ist für einzelne Entwickler zunächst kein Thema, zumindest theoretisch. Wer jedoch einmal Software geschrieben hat, und diese über Monate nicht mehr anfassen musste, wird merken das selbst eigener Code irgendwann wirkt als wäre er von fremden Menschen geschrieben worden.  Software Design Patterns sind also auch für das eigene Verständnis sinnvoll.

Software Design Patterns und Objektorientierung

Viele Programmiersprachen arbeiten momentan objektorientiert. Wichtige Entitäten aus dem Kontext der Software werden als Klasse abgebildet. Gerade bei umfangreicheren Projekten wächst die Zahl der Klassen schnell an. Um diese gekonnt zu verbinden, kann man sogenannte Software Design Patterns nutzen.

Es gibt unterschiedliche Arten von Entwurfsmuster. Zum einen gibt es Muster zum Erzeugen von Objekten (Creational Patterns). Zudem gibt es Muster, mit denen die Struktur einer Software festgelegt werden kann (Structural Patterns). Und es gibt Entwurfsmuster zum Steuern des Verhaltens einer Software (Behavioral Patterns). Alle Kategorien zusammengefasst werden als Software Design Patterns, oder abgekürzt Design Patterns, bezeichnet.

Beispiele für Entwurfsmuster

Ein sehr bekanntes Entwurfsmuster im Umfeld der Objektorientierung ist das Singleton-Muster. Wird dieses implementiert, kann sichergestellt werden, dass von einer bestimmten Klasse immer nur eine Objektinstanz existiert. Ein Beispiel aus der Praxis könnte eine Datenbankanbindung sein. Diese muss nur einmal aufgebaut werden. Der Zugriff erfolgt daher immer über das gleiche Objekt.

Ebenfalls sehr wird verbreitet ist das Model-View-Controller Pattern (MVC abgekürzt). Viele Webanwendungen und Frameworks stützen sich darauf. Auch Apps im Apple Umfeld basieren auf dem MVC-Muster. Die Idee dabei ist es Aufgaben auf verschiedene Bereiche aufzuteilen. Die Models kümmern sich um den Datenstamm. Ein Controller nimmt Eingaben auf und leitet diese weiter. Auch Ausgaben können wieder zurück über den Controller laufen. Die View-Ebene kümmert sich schließlich um das Anzeigen von Daten.

Ein weiteres Beispiel ist das sogenannte Observer Pattern. Hierbei werden sogenannte Observer-Klassen implementiert. Diese »abonnieren« bestimmte Events, die im Programmverlauf ausgelöst werden können. Wird das Event wirklich ausgelöst, sorgt Programmlogik dafür, dass der Observer ausgeführt wird. Dies kann man sehr gut verwenden, um Software erweiterbar und anpassbar zu halten. So kann zum Beispiel eine Rückgabe erfolgen und ein Event ausgelöst werden. Über Observer sind Entwickler in der Lage, den Rückgabewert zu ändern, ohne den Quellcode des Kerns verändern zu müssen.

Fazit

Entwurfsmuster sind unbedingt wichtig. Wer sich mit einer Programmiersprache grundlegend angefreundet hat und die Syntax beherrscht, sollte sich diese irgendwann ansehen. Es gibt teilweise Bücher, die sich direkt auf Patterns eine bestimmten Sprache beziehen. Der heilige Gral der Design Pattern, der allgemein für objektorientierte Programmiersprachen relevant ist, ist folgendes Buch:

Schreib einen Kommentar

Your email address will not be published.