Software-Entwurfsmuster
Software-Entwurfsmuster sind benannte, wiederverwendbare Lösungen für häufig wiederkehrende Entwurfsprobleme, die Expertenpraxis in einer Form erfassen, die über Systeme hinweg kommuniziert, gelehrt und angewendet werden kann.
Definition
Ein Entwurfsmuster ist eine allgemeine, wiederverwendbare Beschreibung einer Lösung für ein wiederkehrendes Entwurfsproblem innerhalb eines gegebenen Kontexts, ausgedrückt in Bezug auf die beteiligten Elemente, ihre Beziehungen und die Kompromisse, die die Lösung mit sich bringt.
Scope
Dieses Thema behandelt die klassischen erzeugenden, strukturellen und verhaltensbezogenen Muster des objektorientierten Entwurfs; die Struktur eines Musters (Name, Problem, Lösung, Konsequenzen); Musterkataloge und Mustersprachen; Unternehmens- und Parallelitätsmuster; sowie die angemessene und unangemessene Verwendung von Mustern, einschließlich des Risikos der Überentwicklung.
Core questions
- Welche wiederkehrenden Entwurfsprobleme adressieren die Standardmuster?
- Wie werden erzeugende, strukturelle und verhaltensbezogene Muster unterschieden?
- Wie dokumentiert ein Muster sein Problem, seine Lösung und seine Konsequenzen?
- Wann hilft die Anwendung eines Musters, und wann fügt sie unnötige Komplexität hinzu?
Key theories
- Erzeugende, strukturelle und verhaltensbezogene Muster
- Der Gang of Four-Katalog organisiert Muster nach ihrem Zweck – erzeugende Muster abstrahieren die Objektinstanziierung, strukturelle Muster setzen Objekte zu größeren Strukturen zusammen, und verhaltensbezogene Muster weisen Verantwortlichkeiten zu und verwalten die Kommunikation.
- Muster als erfasste Entwurfserfahrung
- Muster kodifizieren Expertenlösungen und bieten ein gemeinsames Vokabular, das das Niveau des Entwurfsdiskurses anhebt; eine Mustersprache verbindet Muster so, dass die Lösung eines Problems zum nächsten führt und den gesamten Entwurf leitet.
Clinical relevance
Muster verbessern die Kommunikation und die Entwurfsqualität durch die Wiederverwendung bewährter Strukturen und die Bereitstellung eines gemeinsamen Vokabulars für Teams; werden sie jedoch ohne Urteilsvermögen angewendet, können sie Indirektion und Komplexität einführen, sodass ihr Wert davon abhängt, ob das Muster zum tatsächlichen Problem passt.
History
Inspiriert von Christopher Alexanders architektonischen Mustersprachen formalisierte die Software-Community Entwurfsmuster mit dem Gang of Four-Katalog von 1994; nachfolgende Arbeiten erweiterten Muster auf Architektur, Parallelität und Unternehmensanwendungen, wodurch Muster zu einem festen Bestandteil der Entwurfsausbildung wurden.
Debates
- Muster als Weisheit versus Symptom eines Sprachmangels
- Einige argumentieren, dass der Bedarf an bestimmten Mustern fehlende Sprachmerkmale offenbart und dass die übermäßige Verwendung von Mustern zu einer Überentwicklung führt; andere betrachten Muster als dauerhaftes Entwurfsvokabular, das unabhängig von jeder Sprache ist.
Key figures
- Erich Gamma
- Richard Helm
- Ralph Johnson
- John Vlissides
- Martin Fowler
Related topics
Seminal works
- gamma1994
- buschmann1996
- fowler2002
Frequently asked questions
- Sind Entwurfsmuster an eine bestimmte Programmiersprache gebunden?
- Die klassischen Muster werden in objektorientierten Begriffen beschrieben und in bestimmten Sprachen illustriert, aber die Konzepte sind sprachunabhängig; wie ein Muster realisiert wird, variiert, und einige Muster werden in Sprachen mit erstklassigen Funktionen oder anderen Merkmalen trivial oder unnötig.
- Kann die übermäßige Verwendung von Entwurfsmustern schädlich sein?
- Ja. Das Erzwingen von Mustern, wo eine einfachere Lösung ausreicht, fügt Indirektion und kognitive Belastung hinzu; Muster sollten angewendet werden, weil sie ein tatsächlich wiederkehrendes Problem im Entwurf lösen, nicht als Standardstil.