Design Patterns #Mastery 05

Analysis and Modeling of Software

In der Software-Entwicklung gibt es sogenannte Design Patterns, dabei handelt es sich um bewährte Lösungsschablonen für typisch auftretende Probleme beim Programmieren. Sie sind wie Blaupausen aufgebaut, sprich es handelt sich um vorgefertigten Code, den man dann an die eigenen Anforderungen anpassen kann um wiederauftretende Design-Probleme zu lösen.

Man kann also ein Pattern nicht einfach per copy-paste einfügen sondern benutzt es als Konzept um an ein Problem richtig heran zu gehen. Das bedeutet das der Code des selben Patterns für zwei unterschiedliche Probleme komplett anders aussehen kann. Ein Pattern ist also eine Art Blueprint, nur das Ziel und gewisse Features sind vorgegeben aber wie dies erreicht wird ist dem Programmierer überlassen.

Woraus besteht ein Pattern?

Die meisten Patterns sind sehr einfach aufgebaut, sodass man sie für vielen verschiedene Anwendungsfälle benutzen kann. Wobei es vier Bestandteile von Patterns gibt, die normalerweise immer in der Beschreibung enthalten sind, diese sind:

  • Absicht, welche kurz das Problem und dessen Lösung beschreibt
  • Motivation, beschreibt Problem und Lösung eingehender
  • Struktur der Klassen zeigt alle Teile des Patterns und wie diese zusammenarbeiten
  • Code-Beispiel, mit einer bekannten Programmiersprache wird anhand eines Beispiels die Idee hinter dem Pattern besser verständlich

Geschichte der Design Patterns

Folgendes Video von Youtube beleuchtet die Geschichte hinter den Patterns und gibt noch eine gute Buchempfehlung für diejenigen, die mehr zum Thema wissen wollen. Das Video ist leider auf englisch aber fasst die Entstehung und die Idee die hinter Design Patterns steht sehr gut zusammen.

Welche Patterns gibt es?

Es gibt sehr viele verschiedene Patterns die sich im Laufe der Zeit entwickelt und bewährt haben. Manche haben einen einfachen Datenfluss, d.h. dass die Informationen immer an eine Subklasse weitergeleitet werden aber die Subklasse sie nicht an die übergeordnete KLasse senden kann. Jedoch gibt es auch wesentlich kompliziertere in denen z.B. in beide Richtungen ein Datenfluss Möglich ist.

Grundsätzlich gilt: Alles so simpel wie möglich halten, da dann auftretende Fehler leichter entdeckt und behoben werden können.

Zwei Beispiele für Design Patterns wären zum einen das Singleton Pattern, bei dem es von einer Klasse immer genau ein Objekt gibt. Das bedeutet das immer nur zwei Objekte miteinander kommunizieren wobei das Singleton meist global ist. Ein Nachteil diese Pattern ist jedoch, dass bei größeren Projekten der Datenfluss zu groß wird, da er bidirektional erfolgt.

Ein anderes Beispiel wäre das Delegate Pattern, bei dem ein Objekt an ein anderes Objekt senden kann, was es gerade macht. Für jedes Host-Objekt gibt es genau ein Delegate, was den Aufbau ebenfalls sehr einfach macht.

Was sind anti-patterns?

Anti Patterns sind wie der Name schon vermuten lässt so ziemlich genau das gegenteil von normalen Desing Patterns. Statt den Code leichter verständlich zu machen bzw. das Programmieren zu vereinfachen verkomplizieren Anti Patterns den geschriebenen Code. Das ist vor allem dann nützlich und sinnvoll, wenn man nicht will das jemand anderes den eigenen Code versteht. Sie dienen als eine Art Verschlüsselung des Programmtextes.

Man kann Beispielsweise eine bereits bestehende Funktion in mehrere kleine Funktionen aufsplitten und jede dieser wieder in mehrere andere usw. So wird der eigentliche Code immer unübersichtlicher und für andere schwer nachvollziehbar. Man kann auch einfach den Code in eine Zeile statt in mehrere schreiben, falls es die Sprache zulässt, was auch für verwirrung sorgt.

Bei anti Patterns gilt also: Schlechter Programmierstil = guter Programmierstil.

Abschließende Meinung

Desing Patterns sind eine tolle Lösung um allgemein auftretende Design-Probleme bei Programmieren zu lösen. Man kann komplizierten Code einfacher darstellen und so leichter verständlicher für andere machen. Wohingegen Anti Patterns genau auf das Gegenteil abzielen, nämlich den Code für Außenstehende unlesbar zu machen.

Quellen:

Ein Kommentar zu “Design Patterns #Mastery 05

Hinterlasse einen Kommentar