Designmuster gewannen in der Informatik an Popularität, nachdem das Buch Design Patterns: Elements of Reusable Object-Oriented Software 1994 von der sogenannten “Gang of Four” (Gamma et al.) veröffentlicht wurde, die häufig als “GoF” abgekürzt wird. Im selben Jahr fand die erste Pattern Languages of Programming Conference statt, und im darauffolgenden Jahr wurde das Portland Pattern Repository zur Dokumentation von Designmustern eingerichtet. Der Anwendungsbereich des Begriffs ist nach wie vor umstritten. Bemerkenswerte Bücher im Designmuster-Genre sind: Um Flexibilität zu erreichen, führen Designmuster in der Regel zusätzliche Indirektionsstufen ein, die in einigen Fällen die resultierenden Designs erschweren und die Anwendungsleistung beeinträchtigen können. Patterns entstand als architektonisches Konzept von Christopher Alexander bereits 1966 (c.f. “The Pattern of Streets”, JOURNAL OF THE AIP, September 1966, Vol. 32, Nr. 3, S. 273-278). 1987 begannen Kent Beck und Ward Cunningham mit der Idee zu experimentieren, Muster auf Programmieren – speziell Mustersprachen – anzuwenden, und stellten ihre Ergebnisse auf der OOPSLA-Konferenz in diesem Jahr vor. [1] [2] In den folgenden Jahren folgten Beck, Cunningham und andere dieser Arbeit.

Obwohl Designmuster praktisch schon seit langem angewendet werden, verharrte die Formalisierung des Konzepts der Designmuster seit mehreren Jahren. [3] Die Dokumentation für ein Entwurfsmuster beschreibt den Kontext, in dem das Muster verwendet wird, die Kräfte innerhalb des Kontextes, den das Muster zu lösen sucht, und die vorgeschlagene Lösung. [24] Es gibt kein einheitliches Standardformat für die Dokumentation von Entwurfsmustern. Vielmehr wurden eine Vielzahl von verschiedenen Formaten von verschiedenen Musterautoren verwendet. Laut Martin Fowler sind bestimmte Musterformen jedoch bekannter geworden als andere und werden daher zu gemeinsamen Ausgangspunkten für neue Muster-Schreibbemühungen. [25] Ein Beispiel für ein häufig verwendetes Dokumentationsformat ist das von Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides in ihrem Buch Design Patterns. Es enthält die folgenden Abschnitte: 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] Per Definition muss ein Muster neu in jede Anwendung programmiert werden, die es verwendet.