Design Pattern #1

Autor: NathalieOhneHerz GitHub

Was sind Design Patterns? Wozu braucht man sie? Und wann nutze ich welches?

Im Folgenden sollen die "Design Pattern" eingeführt, aufgelistet und analysiert werden.


Was sind Design Patterns?

Eine ganz freie Übersetzung wäre zum Beispiel: "Entwurfsmuster". In der Softwareentwicklung sind die "Design Pattern" eine Art Vorlage. Sie sollen dem Programmierer dabei helfen, seinen Code zu strukturieren und somit seinem Projekt eine gewisse Ordnung zu verleihen. Dabei wird ihnen zugeschrieben, dass sie "die besten Methoden" (engl. "best practice") repräsentieren. Obwohl sie als solche als unantastbar angesehen werden könnten, sind sie dennoch mehr Richtlinien als Regeln. Man muss sich nicht daran halten, jedoch werden sie, vor allem in der Objektorientierten Programmierung immer eine Schlüsselrolle einnehmen, wenn es darum geht, die gängige Praxis zu gestalten.
Die Lösung genereller Probleme in einer wenn möglich allgemein gültigen Art sowie die Gestaltung von Code sind dabei zentrale Ziele der "Design Pattern".


Warum sollte ich die Design Patterns nutzen?

Wenngleich dein Code dir gehört und im Normalfall auch nur du allein entscheidest, wie du ihn gestaltest, so gibt es Richtlinien, an die du dich halten kannst. In einer sich globalisierenden Welt sind Standards vorgesehen und eben diese Standards werden von den "Design Pattern" geliefert. Sie bilden eine Basis auf der man sich unterhalten ein, ein Stück Struktur im Chaos. In der Theorie soll dein Code durch die Verwendung von "Design Pattern" in seiner Struktur und in seinem Inhalt wartbarer, skalierbarer und besser zu verstehen sein.
Die Design Pattern sind keineswegs festgelegt, sie entwickeln sich seit einer schon relativ langen Zeit. Somit unterliegen sie gleichzeitig dem Wandel der Softwareentwicklung und verändern sich immer wieder. In sie fließt dabei eine Menge an Impressionen verschiedener Programmierer. Sie folgen nicht einmal unbedingt dem Prinzip der Logik, sondern sie begründen sich auf Empirie. Es sind die Muster, die nach den Erfahrungen von vielen die beste Möglichkeit bieten, bestimmte Probeleme zu lösen.

Kategorisierung

Die Anzahl, Bandbreite und die variable Form der "Design Pattern" macht eine Unterteilung in Kategorien möglich. So wird üblicherweise nach Erzeugungsmuster, Strukturmuster und Verhaltensmuster entschiedene. Die Unterscheidung ist relativ trivial und soll hier nicht weiter erläutert werden.


Verwendung von Design Patterns und die Gefahren

Ein Muster kommt selten allein, Sie referenzieren sich untereinander, manche sagen sogar sie würden alle zusammen genommen eine eigene Sprache entwickeln. Muster sollten in der Regel Probleme lösen, erprobt sein und empirisch als gut bewertet werden können, nicht trivial sein und den gesamten Mechanismus des Programmes mit einbeziehen.
Bei alle dem werden die "Design Pattern" jedoch häufig missverstanden und teilweise als "Tutorial" missbraucht. Vor allem in kleinen Programmen gibt es oft simplere und elegantere Lösungen. Eine zwanghafte Ausrichtung des Codes durch die "Design Pattern" stiftet oft mehr Unordnung als dass es zur Lösung eines Problemes beiträgt. Insofern werden die Qualität eines Codes keinesfalls durch die Verwendung von möglichst vielen "Design Pattern" garantiert.


Auflistung ausgewählter Muster [werden nach und nach in eigenen Artikeln behandelt]

  1. Factory Pattern
  2. Singleton Pattern
  3. Service Locator Pattern
  4. BuilderPattern
  5. State Pattern
  6. Template Pattern
  7. MVC Pattern
  8. Adapter Pattern
  9. Object Pool Pattern