Der Ursprung von Designmustern sagt uns viel darüber aus, warum es sie gibt. In den 1970er Jahren entstand aus den berühmten Xerox PARC-Tagen eine objektorientierte Programmiersprache namens Smalltalk, die sehr einflussreich auf das Design aller nachfolgenden Programmiersprachen war. Sie haben eine Menge der Eigenschaften einer Person, die einen großen Software-Entwickler machen würde. Sie sind fasziniert von der Gelegenheit, aber Sie fragen sich wahrscheinlich: Was macht ein Softwareentwickler überhaupt? 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. Das Session-Fassadenmuster entwickelte sich aus Erfahrungen mit Enterprise JavaBeans (EJBs). Systeme, die auf der neu eingeführten Entität EJBs (die mit einer Datenbank kommunizieren) aufbauten, verlangsamten sich zu einer Durchforstung. Leistungstests ergaben Probleme, die sich aus mehreren Netzwerkanrufen bei der Kommunikation mit der Entität EJBs ergaben, wodurch der Aufwand für den Aufbau der Netzwerkverbindung, die Serialisierung der Daten für das Senden und Empfangen und andere Effekte verursacht wurden. Entwurfsmuster bestehen aus mehreren Abschnitten (siehe Dokumentation unten). Von besonderem Interesse sind die Abschnitte Struktur, Teilnehmer und Zusammenarbeit. Diese Abschnitte beschreiben ein Designmotiv: eine prototypische Mikroarchitektur, die Entwickler kopieren und an ihre jeweiligen Designs anpassen, um das wiederkehrende Problem zu lösen, das durch das Designmuster beschrieben wird.

Eine Mikroarchitektur ist eine Reihe von Programmbestandteilen (z. B. Klassen, Methoden…) und deren Beziehungen. Entwickler verwenden das Designmuster, indem sie in ihren Entwürfen diese prototypische Mikroarchitektur einführen, was bedeutet, dass Mikroarchitekturen in ihren Entwürfen eine Struktur und Organisation haben, die dem gewählten Designmotiv ähnelt. Nach dem Mapping des Entwurfs, dem Erstellen von Flussdiagrammen und dem Entwerfen jedes Schritts des Prozesses erstellen Entwickler Diagramme und Modelle, um Programmierern anzuweisen, wie der Code für das Programm geschrieben werden soll. Ein Entwurfsmuster stellt ein Schema zum Verfeinern der Subsysteme oder Komponenten eines Systems oder der Beziehungen zwischen ihnen bereit. Es beschreibt eine häufig wiederkehrende Struktur von kommunizierenden Komponenten, die ein allgemeines Entwurfsproblem in einem bestimmten Kontext löst. Das Designmuster für ein Softwaresystem legt die Mittel und Wege zum Aufbau der Softwarekomponenten vor. Das Strategiemuster ermöglicht das Gruppieren verwandter Algorithmen unter einer Abstraktion, wodurch ein Algorithmus oder eine Richtlinie für einen anderen ausgewechselt werden kann, ohne den Client zu ändern. Anstatt einen einzelnen Algorithmus direkt zu implementieren, erhält der Code Laufzeitanweisungen, in denen angegeben wird, welche der auszuführenden Algorithmengruppe ausgeführt werden soll.

Der Mangel an erfolgreichen Mustern wird jedoch sicherlich sichtbar sein, da dies den Effekt von erhöhter Entwicklungszeit/Aufwand/Kosten/Bugs/Nacharbeit und der Unfähigkeit, sich leicht an sich ändernde Kundenanforderungen anzupassen, bewirkt. Das Konzept der Designmuster wurde von einigen im Bereich der Informatik kritisiert. Das durchschnittliche Jahresgehalt für Anwendungssoftware-Entwickler im Jahr 2018 betrug 103.620 US-Dollar, wie von der BLS berichtet.3 Die niedrigsten 10 Prozent verdienten weniger als 61.660 US-Dollar und die höchsten 10 Prozent verdienten mehr als 161.290 US-Dollar. Einige der bestverdienenden Anwendungssoftware-Entwickler wurden bei Software-Publishing-Unternehmen eingesetzt.3 Wenn Sie zwei Anwendungen haben, wobei eine Ausgabe als XML ausspuckt und die andere JSON-Eingabe erfordert, benötigen Sie einen Adapter zwischen den beiden, damit sie nahtlos funktionieren. Ein Architekturmuster drückt eine grundlegende strukturelle Organisation oder ein Schema für komplexe Systeme aus.