Mustern sind

July 30, 2020

Die Untersuchung von Designmustern war übermäßig ad hoc, und einige haben argumentiert, dass das Konzept dringend auf eine formellere Grundlage gestellt werden muss. Bei der OOPSLA 1999 wurden die Viererbanden (mit voller Mitarbeit) einem Schauprozess unterzogen, in dem sie wegen zahlreicher Verbrechen gegen die Informatik “angeklagt” wurden. Sie wurden von 2/3 der “Juroren”, die an dem Prozess teilnahmen, “verurteilt”. Es wurde beobachtet, dass Designmuster nur ein Zeichen dafür sein können, dass einige Features in einer bestimmten Programmiersprache fehlen (z. B. Java oder C++). Peter Norvig zeigt, dass 16 der 23 Muster im Design Patterns Buch (das sich in erster Linie auf C++ konzentriert) in Lisp oder Dylan vereinfacht oder eliminiert werden (über direkte Sprachunterstützung). [26] Entsprechende Beobachtungen wurden von Hannemann und Kiczales gemacht, die mehrere der 23 Entwurfsmuster mit einer aspektorientierten Programmiersprache (AspectJ) implementierten und zeigten, dass Abhängigkeiten auf Codeebene aus den Implementierungen von 17 der 23 Entwurfsmuster entfernt wurden und dass eine aspektorientierte Programmierung die Implementierung von Designmustern vereinfachen könnte. [Zitat erforderlich] Siehe auch Paul Grahams Essay “Revenge of the Nerds”.

[27] Die Notwendigkeit von Mustern ergibt sich aus der Verwendung von Computersprachen oder -techniken mit unzureichender Abstraktionsfähigkeit. Bei idealem Factoring sollte ein Konzept nicht kopiert, sondern lediglich referenziert werden. Aber wenn auf etwas verwiesen wird, anstatt kopiert zu werden, dann gibt es kein “Muster” für Beschriftung und Katalog. Paul Graham schreibt im Essay Revenge of the Nerds. Entwurfsmuster bieten eine Standardterminologie und sind für bestimmte Szenarien spezifisch. Beispielsweise bedeutet ein Singleton-Entwurfsmuster die Verwendung eines einzelnen Objekts, sodass alle Entwickler, die mit einem einzelnen Entwurfsmuster vertraut sind, einzelne Objekte verwenden und einander mitteilen können, dass das Programm einem Singleton-Muster folgt. Ziel: Verstehen Sie den Zweck und die Verwendung der einzelnen Entwurfsmuster. So können Sie das richtige Muster nach Bedarf auswählen und implementieren. “Achten Sie auf die komplizierten Muster Ihrer Existenz, die Sie für selbstverständlich halten.” — Doug Dillon Design-Muster wurden über einen langen Zeitraum entwickelt und bieten beste Lösungen für bestimmte Probleme, die während der Softwareentwicklung konfrontiert sind.

Das Erlernen dieser Muster hilft unerfahrenen Entwicklern, Softwaredesign auf einfache und schnellere Weise zu erlernen. Einige Autoren behaupten, dass sich Designmuster nicht wesentlich von anderen Formen der Abstraktion unterscheiden und dass die Verwendung neuer Terminologie (von der Architekturgemeinschaft entlehnt) zur Beschreibung bestehender Phänomene im Bereich der Programmierung unnötig ist. Das Model-View-Controller-Paradigma wird als Beispiel für ein “Muster” anpriest, das dem Konzept der “Designmuster” um mehrere Jahre vorausgeht. Es wird weiter von einigen argumentiert, dass der hauptbeitrag der Design Patterns Community (und der Gang of Four Buch) war die Verwendung von Alexanders Mustersprache als eine Form der Dokumentation; eine Praxis, die in der Literatur oft ignoriert wird.