Es gibt zwei wesentliche Gründe für die Existenz von Mustern.
Das erste wurde bereits ziemlich gut erklärt: Die Verwendung von Mustern fördert die Kommunikation zwischen Entwicklern. Wenn Sie und ich verstehen, dass ich mit 'Observer' von einer sehr spezifischen Codestruktur spreche, kann ich sehr schnell beschreiben, wie ein Teil des Codes, der dieses Muster verwendet, funktioniert. Die Alternative besteht darin, die zeitaufwändige und fehleranfällige Lösung vollständig zu beschreiben. ("Nun, ich habe diese reine virtuelle Klasse erstellt, die Konsumentenobjekte beschreibt und Schnittstellen für sie bereitstellt, und dann habe ich eine Klasse erstellt, die eine Liste der aktiven Konsumenten verwaltet, die ...")
Der zweite Vorteil von Mustern ist, dass es sich um Standard-Lösungsformen für gängige Problemformen handelt. Wenn Sie Ihre Muster kennen und beispielsweise auf ein Problem stoßen, bei dem Sie einen guten Weg finden müssen, um Informationen von (möglicherweise mehreren) Erzeugerobjekten zu mehreren Verbraucherobjekten zu erhalten, ohne unnötige Kopplung zwischen Klassen einzuführen, werden Sie dies erkennen ist ein Job für einen Beobachter! " und Sie werden sofort wissen, wie Sie Ihr Problem lösen können.
Diese Vorteile verstärken sich auch gegenseitig. Sie ermöglichen es Ihnen, bestimmte gängige Problemklassen schnell zu lösen, und wenn Sie fertig sind, können Sie sehr schnell kommunizieren, wie Sie das Problem gelöst haben.
Vergleichen Sie dies mit einer Welt, in der Muster "nicht existieren". Sie stoßen auf eine dieser Problemklassen, die im Allgemeinen keine trivialen Designprobleme sind, und Sie verbringen eine ganze Weile damit, eine gute Lösung zu finden (die im Übrigen sehr wahrscheinlich dem entsprechenden Muster ähnelt). Dann kommt Ihr Mitarbeiter und möchte wissen, wie Sie es gelöst haben, und Sie verbringen eine Stunde damit, das Wie und Warum zu besprechen.
Dies alles ist mit einer Einschränkung verbunden, die ziemlich offensichtlich erscheinen sollte: Versuchen Sie nicht, Probleme in Muster zu zwingen, die nicht passen. Wenn das Muster nicht zum Problem passt, wird die Lösung verwickelt und Sie verlieren den Vorteil der Aufwandsreduzierung von Mustern. Da Ihre Arbeit nicht mehr mit dem Verständnis Ihrer Mitarbeiter für die Bedeutung des Musters übereinstimmt, verlieren Sie außerdem die Kosten für den Kommunikationsnutzen. In der Tat werden Sie wahrscheinlich die Kommunikationskosten über die No-Pattern-Kosten hinaus erhöhen, da der Missbrauch des Musters Ihren Mitarbeitern ein falsches Verständnis der Lösung vermittelt, was schlimmer ist als gar kein Verständnis.