Sie erwähnen sowohl Entwurfsmuster als auch Kopplung. Dies sind separate Konzepte, daher werde ich sie separat behandeln. Die einzige wirkliche Verbindung besteht darin, dass Entwurfsmuster dazu neigen, eine lose Kopplung zu fördern (da dies ein Hauptaspekt eines guten Entwurfs ist).
Designmuster
Das Konzept der Entwurfsmuster ist eigentlich recht einfach: Sie sind nur eine Reihe von Vorlagen, mit denen Sie verschiedene häufig auftretende Probleme lösen können. Es gibt 2 Hauptgründe, warum sie beliebt sind:
- Sie sind „bewährt“: Sie wurden bereits mehrfach verwendet, und die Vor- und Nachteile sind allgemein bekannt. Insbesondere sind subtile Probleme bekannt, die zu großen Problemen führen können.
- Sie bieten eine gemeinsame Terminologie und ermöglichen so eine einfachere Kommunikation. Wenn jemand sagt "Klasse X spielt die Rolle des Beobachters im Beobachtermuster", können Entwickler, die mit dem Muster vertraut sind, sofort verstehen, was los ist.
Woher weißt du, dass du es richtig implementiert hast? Das ist eine schwierige Frage. Bei den meisten Mustern ist es einfach - Sie haben es entweder kaputt gemacht oder Sie haben es nicht. Einige Muster sind weniger klar definiert als andere - zB Model-View-Controller . Solche Muster werden besser als allgemeine Richtlinien verwendet. Die Besonderheiten der Implementierung sind weniger wichtig als das Verständnis der Gründe für das Vorhandensein des Musters und dessen Zweck.
Designmuster sind nicht der einzig wahre Weg. Oft müssen Sie sie entweder für Ihre speziellen Zwecke anpassen oder es gibt einfach keine Muster, die den Anforderungen entsprechen. Ein Entwurfsmuster zu erzwingen, wo es nicht passt, ist eine schlechte Idee. Es ist, als würde man einen wirklich guten Hammer benutzen, wenn man eigentlich einen Schraubenzieher möchte.
Kupplung
Dies ist eine wirklich wichtige Idee in der Informatik. Da sich die Anforderungen für die meisten Softwareprojekte im Laufe der Zeit (manchmal erheblich) ändern, ist es wichtig, dass ein Design mit Änderungen umgehen kann. Die Kopplung ist im Grunde das Maß dafür, "wie schwer es wäre, diese Komponente gegen eine andere auszutauschen". Die 'Komponente' kann eine Methode, eine Klasse, ein Paket, eine Bibliothek usw. sein.
In diesem Wikipedia-Artikel sind verschiedene Kopplungsarten aufgeführt .