Musterkataloge und Mustersprachen
- Überblick
- Patterns und Pattern-Beschreibungen
- Patterns im Detail
- Musterkataloge und Mustersprachen
- Patterns anwenden
- Fazit
Um Patterns auch wieder zu finden bzw. um das Wissen um die Pattern zu verbreitet, hat man sie in Musterkatalogen zusammengetragen. So kann man sie sich zu Hause ins Regel stellen (möglichst griffbereit) oder online abrufen. Dokumentiert man nicht nur die Muster an sich, sondern auch deren Beziehungen untereinander, so erhält man eine so genannte Mustersprache (pattern language). Pattern Languages ermöglichen es, quasi „Buzzword-Bingo“ mit Patterns zu spielen. „Wir benutzen dazu die Fassade als Mediator, wobei wir die Benachrichtigung des Mediators über das Observer-Pattern realisieren.“ „Unsere Template Method X ruft Y als Hook Method und die Factory Method Z auf, die die passende Strategy erzeugt.“ Etwas weniger einprägsam könnte man auch sagen, dass man genau dann eine Mustersprache hat, wenn die Verwendung eines Patterns, gleich wieder andere Patterns nach sich zieht, die man betrachten könnte.
Das sind jetzt extreme Beispiele. In der Praxis kommen Patterns zwar häufig vor, jedoch kann man kaum alles mit Patterns beschreiben. Es ist sogar so, dass man Patterns nicht überverwenden sollte. Es hört sich zwar toll an, wenn man viele Patterns verwendet hat, aber Patterns zu verwenden, die eigentlich gar nicht nötig gewesen wären, ist ein Anti-Pattern. Richtig angewendete Patterns helfen; falsch angewendete Patterns hingegen machen eine Software komplizierter als sie sein müsste und sind deshalb kontraproduktiv.
Letztendlich ist aber wirklich die Idee hinter den Patterns eine einfach Möglichkeit zu haben, über Lösungen zu sprechen. Wenn man einen Namen für ein Lösungskonzept hat, kann man dieses viel leichter kommunizieren, als wenn man sagen müsste „Das Konzept bei dem die eine Klasse die Anfragen entgegen nimmt und sie ggf. an eine andere mit gleichem Interface weiterreicht.“ Man sagt einfach „das Proxy-Pattern“ und jeder weiß, was gemeint ist.
Manche unterscheiden neben der Mustersprache noch Mustersysteme. Ich halte diese Unterscheidung aber für nicht allzu sinnvoll. Im Kern meinen die beiden Begriffe das selbe.
Welche (bekannten) Musterkataloge gibt es nun?
- Design Patterns. Elements of Reusable Object-Oriented Software von Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides, der so genannten „Viererbande“ (Gang of Four). Das Buch nennt man deshalb auch das „GoF-Book“ und bisweilen (wie beispielsweise auch hier im Blog) findet man Referenzen auf das GoF-Book wie beispielsweise „Proxy (GoF:207)“, was auf Seite 207 im GoF-Book verweisen würde. Dieses Buch ist wohl das bekannteste Pattern-Buch überhaupt. Das Buch beschreibt eine Mustersprache aus 23 Entwurfsmustern und ist generell sehr empfehlenswert.
- Pattern-Oriented Software Architecture. A System of Patterns: Volume 1 von Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad und Michael Stal. Die Autoren nennt man manchmal die „Party of Five“ und das Buch „POSA“ oder auch „das Siemens-Buch“, weil es im Umfeld von Siemens entstand. Das Buch beschreibt Architekturmuster, Entwurfsmuster und Idiome. Auch dieses Buch ist empfehlenswert und wie man an „Volume 1“ erkennen kann, gibt es auch ein paar Folgebände.
- Martin Fowler hat ein Buch über Analysemuster geschrieben. Das hab ich aber noch nicht gelesen.
- Noch ein Buch von Martin Fowler, das ich noch nicht gelesen hab: Patterns of Enterprise Application Architecture
- Auch über Anti-Patterns gibts ein Buch und auch das hab ich noch nicht gelesen.
- Ward’s Wiki ist eine wahre Fundgrube für Softwareenwicklungs-Krempel aller Art. Unter anderem beheimatet es das „Portland Pattern Repository“. Genau genommen ist das sogar der Ursprung des Wikis überhaupt. Also nicht nur der Ursprung von Ward’s Wiki, sondern der Ursprung aller Wikis. Das Wiki war Ward Cunninghams Idee, wie man Patterns katalogisieren und über sie diskutieren kann. Erst viel später gab es dann Wikipedia & Co., die die Idee aufgegriffen. Ohne Patterns gäbe es also keine Wikis und keine Wikipedia. Ward’s Wiki wirkt auf den ersten Blick chaotisch und das ist es in gewisser Weise auch. Ein Wühltisch für allerlei Nützliches, wo man das Passende aber jeweils noch suchen bzw. entdecken muss: Patterns
- Auch die Wikipedia hat was (mit schwankender Qualität) zu Patterns: deutsch, englisch
- Die folgende Seite hab ich noch gefunden, die eine Untermenge der GoF-Muster ausführlich und anschaulich beschreibt. Ich hab mir das nicht im Detail angesehen, aber auf den ersten Blick scheint die Seite ganz hilfreich zu sein: http://www.philipphauer.de/study/se/design-pattern.php
- … noch viel viel mehr …
Permalink
> _In_ meinen Augen vermischen diese Definitionen jedoch oft
Typo.
Permalink
> Außerdem muss bei Änderung der GUI die _ChatClient_-Klasse angepasst werden
Typo.
Permalink
Beides korrigiert.