Naja … zumindest sollte das Interesse der Leute geweckt sein, sich doch etwas näher mit dem Thema auseinander zu setzen. :)
Grundsätzlich gibt es eine Vielzahl von Mustern (Patterns) im Umfeld der Softwareentwicklung, die alle eine mehr oder weniger relevante Rolle spielen. Man unterscheidet
- Analysemuster
- Architekturmuster
- Entwurfsmuster
- Antimuster
- …
wobei Entwurfsmuster (und Architekturmuster) den eigentlichen Kern unserer Betrachtungen bilden.
Entwurfsmuster oder auch Patterns oder auch Design Patterns … egal wie man sie bezeichnet, sie erfüllen ein und denselben Zweck, sie bilden bewährte Lösungsansätze für wiederkehrende Entwurfsprobleme und typische Aufgaben im Umfeld des Softwareentwicklungsprozesses.
Dabei gibt es häufig eine grundlegende Kategorisierung der Entwurfsmuster anhand Ihres Problemlösungsansatzes:
- Erzeugende Muster (creational patterns) - Kontrolle über Objekterzeugung, Objekterzeugungsmechanismen
- Strukturelle Muster (structural patterns) - Kombination von Klassen und Objekten zur Bildung größerer Strukturen
- Verhaltensmustern (behavioral patterns) - Definition von Kommunikation zwischen Objekten und Kommunikationsfluss
- sonstige Muster
Wer bestimmt nun was ein Design Pattern ist und was nicht bzw. welche wesentlichen Merkmale machen ein Entwurfsmuster zu einem Solchen!?
Die Frage nach dem „Wer“ ist wohl eher zweitrangig, denn mit dem Erfolg bzw. den offensichtlichen Vorteilen eines Entwurfsmusters kommt auch dessen Verbreitung durch die Community.
Die positiven Merkmale eines Patterns sind das was es ausmacht, jedoch sind diese auch immer abhängig von der Problemstellung und den Randbedingungen. Es lassen sich schnell einige Merkmale aufzählen, welche die Lösungen von Aufgaben mit Hilfe von Design Patterns prägen:
- gute Wiederverwendbarkeit
- besondere Performance
- gute Skalierbarkeit
- schnell lösbar
- …
Das sollte erst einmal einen ganz guten (Kurz-)Überblick geben was Patterns sind, wie man sie unterscheidet und wofür sie gut sind. Ich möchte aber auch darauf aufmerksam machen, dass man mit solchen Entwurfsmustern auch vorsichtig umgehen sollte … denn nicht immer ist man mit der Anwendung von Pattern gut beraten. Wie in vielen Bereichen des Lebens gilt auch hier: „Nicht immer gleich mit Kanonen auf Spatzen feuern!“ - Overengineering hat erfahrungsgemäß selten positive Ergebnisse gebracht.
Wer mehr über Entwurfsmuster/Patterns wissen möchte, der kann sich gerne weiter mit einigen der Quellen beschäftigen, die ich zu meiner Vorbereitung genutzt habe:
- Wikipedia DE - Entwurfsmuster
- Wikipedia EN - Creational, Structural, Behavioral pattern
- MSDN WebCast Serie - Patterns im Einsatz
- Addison Wesley - Refactoring to Patterns
(ISBN 0-321-21335-1) - Addison Wesley - Design Patterns explained
(ISBN 0-201-71594-5) - O'Reilly - C# 3.0 Design Patterns
(ISBN 0-596-52773-X)
Anmerkung:
Gut … ich weiß dass ich mit der obigen Verallgemeinerung bereits eine Steilvorlage für die Leute gebe, die sich intensiver mit dem Thema befassen und sicher auch ein viel tieferes Wissen als ich besitzen … aber ich denke zum grundlegenden Verständnis sollte das erst einmal reichen.

