Die Kenntnis um Design Patterns (Entwurfsmuster) sollte zum Werkzeugkasten eines jeden Entwicklers gehören, dem sauberes und wirtschaftliches Arbeiten am Herzen liegt. Die meisten Entwickler kennen und setzten zumindest die gängigen Entwurfsmuster intuitiv ein. Kein Wunder, zeigen doch aktuelle Frameworks (z. B. Zend Framework) wie wunderbar durchdachte Software-Architektur basierend auf Design Patterns funktionieren kann und wie generisch die Komponenten aufgebaut werden können. Dies fördert sowohl das schnelle Verstehen, wie auch ein problemloses Erweitern von bestehenden Softwarepaketen. Auch die Wartbarkeit einer Software profitiert von diesem standardisierten Vorgehen. Das Wissen um diese Entwurfsmuster verbindet außerdem Entwickler unterschiedlicher Erfahrungsstufen und lässt sie ein Problem methodisch erkennen und es gemeinsam lösen.
Doch was ist ein Design Pattern? Ein Design Pattern beschreibt auf eine universelle Art und Weise die optimale Lösung für ein spezielles Problem. Bezeichnend für einen Design Pattern ist dessen Ungebundenheit an eine spezielle Programmiersprache. Viele der bekannten Entwurfsmuster kamen nicht über Nacht. Sie sind oft die Ergebnisse langwieriger Findungsprozesse. Wer also einen reichen Schatz an gängigen Design Patterns sein eigen nennt – und diese geübt einsetzen kann, spart nicht nur Zeit bei der Entwicklung, sondern profitiert auch von der wertvollen Erfahrung anderer Entwickler, indem er beim Implementieren von Lösungen einen bewährten und robusten Weg geht.
Zusammengefasst gilt: Design Pattern bilden die beste Grundlage für einen guten Softwareentwickler.
Soviel zur Theorie. In der Praxis werden Design Patterns oft als sehr komplexe und schwer zu verstehende Konstrukte gesehen. Gerade die bereits genannte Universalität macht es manchmal schwer allgemein formulierte Lösungsmuster mit einem konkreten Problem oder gar in Einklang mit der Einfachheit einer Sprache wie PHP zu bringen. Wo also anfangen?
Zu aller erst sollte man sich einen Überblick über die unterschiedlichen Kategorien der Entwurfsmuster verschaffen.
Zur leichteren Orientierung werden daher im Folgenden die wichtigsten Kategorien mit den jeweils zwei typischen Vertretern kurz erläutert. Dies soll den Einstieg erleichtern und aufzeigen, dass Design Pattern auf den Punkt gebracht gar nicht so kompliziert sind.
Erzeugungsmuster
Die Entwurfsmuster dieser Kategorie befassen sich mit der Erstellung von Objekten.
Singleton-Pattern
Das Singleton-Pattern sorgt dafür, dass immer nur eine Instanz einer Klasse erstellt werden kann. Wobei zu jeder Zeit eine aktuelle Version des entsprechenden Objektes global zur Verfügung steht. Dies entlastet nicht nur den Arbeitsspeicher und die CPU, sondern beugt auch Fehlern durch Redundanz vor.
Factory-Method-Pattern
Mit Hilfe dieses Patterns werden zentral einheitliche Schnittstellen definiert. Die eigentliche Erzeugung von Objekten wird auf die darunter liegende Klassen verlagert. Dieses Vorgehen erleichtert die Integration von spezialisieren Klassen und unterstützt bei der Programmierung gegen Schnittstellen.
Strukturmuster
Die Strukturmuster optimieren das Zusammenspiel von Objekten und erhöhen die Kompatibilität.
Composite-Pattern
Dieses Design Pattern fügt mehrere Objekte zusammen und ermöglicht über eine baumähnliche Struktur mit den einzelnen Elementen komfortabel zu arbeiten. Nach außen hin wirkt die Summe aller Elemente wie ein einzelnes Objekt, wodurch die Handhabung erleichtert wird.
Adapter-Pattern
Das Adapter-Pattern fungiert als eine Zwischenschicht und ermöglicht Klassen, die aufgrund unterschiedlicher Schnittstellen nicht kompatibel sind, dennoch zusammen zu arbeiten.
Verhaltensmuster
Inhaltlich befassen sich die Verhaltensmuster mit der Art und Weise der Interaktion zwischen den einzelnen Objekten.
Observer-Pattern
Ist es nötig den Zustand eines Objektes zu überwachen und auf bestimmte Status zu reagieren, ist das Observer-Pattern die richtige Wahl. Denn ändert sich der Zustand eines Objektes, werden unter Einsatz des Observer-Patterns die beobachtenden Objekte automatisch informiert.
Command-Pattern
Das Command-Pattern erlaubt es die Anfragen an ein Objekt zu kapseln und diese verkettet abzuarbeiten.
Datenschicht und Business-Logik
Wie der Name bereits sagt, behandeln die Entwurfsmuster dieser Kategorie den allgemeinen Umgang mit Daten und der Business-Logik.
Active-Record-Pattern
Das Active-Record-Pattern bildet eine einzelnen Zeile aus der Datenbank in Form eines Objektes ab. Durch das Verwenden entsprechender Objekt-Methoden, erspart sich der Entwickler auf elegante Weise den direkten Umgang mit SQL-Statements.
Registry-Pattern
Mit dem Registry-Pattern ist es möglich Daten und Objekte an einer zentralen Stelle abzulegen und einen bequemen globalen Zugriff darauf zu ermöglichen.
Präsentationsschicht
Hier werden Entwurfsmuster eingeordnet, die sich mit der Interaktion mit dem Benutzer und der Darstellung von Daten befassen.
Front-Controller-Pattern
Das Front-Controller-Pattern sorgt für die Annahme aller Anfragen und die einheitliche Verarbeitung initialer Aufgaben. Anschließend wird für die Weitergabe von speziellen Aufgaben an das zuständige Objekt gesorgt.
View-Helper-Pattern
Dieses Pattern erlaubt häufig verwendete Logik, welche der Darstellung dient, zentral abzulegen und allen Views zur Verfügung zu stellen.
In weiteren Blogbeiträgen steigen wir tiefer in das Thema ein und behandeln die wichtigsten Design Pattern im Detail.
Schreibe einen Kommentar