Was für Probleme kann ich haben, wenn ich Software Design Patterns nicht verwende? Können Sie mir die Probleme bei der Annäherung an das Design mit objektorientierten Standardtechniken erläutern?
Was für Probleme kann ich haben, wenn ich Software Design Patterns nicht verwende? Können Sie mir die Probleme bei der Annäherung an das Design mit objektorientierten Standardtechniken erläutern?
Antworten:
Sie verpassen den Punkt.
Entwurfsmuster existieren in der Regel beim Entwerfen von Software, genau wie strukturelle Muster in der Welt existieren. Selbst wenn Sie den Namen der Dinge nicht kennen, werden Sie schließlich feststellen, dass bestimmte physische Strukturen für bestimmte Probleme gut geeignet sind. Sie werden feststellen, dass eine Dreiecksform aus Holz / Metallstäben usw. eine sehr stabile Struktur ist, jedoch nur in einer Ebene. Sie werden feststellen, dass quadratische Steine gewisse Vorteile gegenüber runden haben ...
Ebenso sind bestimmte Softwarestrukturen auf irgendeine Weise einzigartig oder optimal. Sie werden sie schließlich finden und verwenden, unabhängig davon, ob Sie die Namen für sie kennen. Das ist der Kern von Designmustern - sie sind Namen für diese Strukturen, die erfahrene Programmierer sowieso kennen und verwenden. Es gibt Programmierern die Möglichkeit, viel einheitlicher und prägnanter zu kommunizieren. Es lässt Programmierer auch bewusster über das Konzept von Mustern nachdenken.
Also die zwei wichtigsten Punkte, die ich versuche zu machen:
Diejenigen, die sich nicht an die Vergangenheit erinnern können, sind dazu verdammt, sie zu wiederholen.
Sie werden keinen anderen spezifischen Problemen gegenüberstehen als denjenigen, die durch Ihr Design hervorgerufen werden. Und mit der Zeit werden Sie die Muster verwenden, ohne sich dessen bewusst zu sein. Sie haben nur Zeit damit verbracht, sie selbst herauszufinden. Wenn Sie die Muster im Voraus kennen, können Sie sie leichter im Design erkennen und haben den großen Vorteil, dass sie von einer Reihe von Personen bewiesen werden.
Alles, was heute entwickelt wird, basiert größtenteils auf Vorkenntnissen, es wäre sinnlos, es zu ignorieren. Stellen Sie sich vor, Sie bauen heute einen Wolkenkratzer, ohne die Probleme der Menschen zu kennen, die vor einigen hundert Jahren Kathedralen gebaut haben.
Was für Probleme kann ich haben, wenn ich Software Design Patterns nicht verwende?
Sie haben das Problem, dass Sie keine Software schreiben können.
Variablen sind ein Entwurfsmuster.
Methoden sind ein Entwurfsmuster.
Operatoren - Addition, Subtraktion usw. - sind ein Entwurfsmuster.
Anweisungen sind ein Entwurfsmuster.
Werte sind ein Entwurfsmuster.
Referenzen sind ein Entwurfsmuster.
Ausdrücke sind ein Entwurfsmuster.
Klassen sind ein Entwurfsmuster.
...
Alles, was Sie zu jeder Zeit in der Programmierung tun, ist ein Entwurfsmuster . Meistens ist das Muster so tief in Ihrem Denken verankert, dass Sie es nicht mehr als "Designmuster" betrachten. Die Dinge, die Sie lernen müssen, wie "das Singleton-Muster" und so weiter, sind einfach Muster, die (noch) nicht in die von Ihnen verwendete Sprache eingebunden wurden.
Können Sie mir die Probleme bei der Annäherung an das Design mit objektorientierten Standardtechniken erläutern?
Nein, ich habe keine Ahnung, was diese Frage bedeutet. Entwurfsmuster sind "objektorientierte Standardtechniken" - das macht sie zu Entwurfsmustern . Ein Entwurfsmuster ist eine Standardtechnik zum Lösen eines bestimmten Problems, insbesondere (wenn auch nicht unbedingt ) in einer objektorientierten Sprache.
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.
- Das ist (fast) die Definition eines Entwurfsmusters - ein flexibles / leicht wiederverwendbares Codekonstrukt, das verwendet wird, um eine Einschränkung in der Sprache selbst zu überwinden, und das leicht mit anderen zu kommunizieren ist. Sobald es Teil der Sprache ist, ist es kein Designmuster mehr.
Es ist wichtiger, den Sinn eines Entwurfsmusters zu verstehen, als es für den Buchstaben zu verwenden. Einige Muster sind, IMO, albern, zumindest in den Sprachparadigmen, an die ich gewöhnt bin. IMO, ein Programmierer, der Designmuster einfach blind verwendet und sie nicht wirklich versteht, ist ein schlechterer Programmierer als derjenige, der die Dinge selbst durchdenken möchte. Aber jemand, der sich mit den Ideen vertraut macht und dann selbst entscheidet, ob sie sich lohnen, ist wahrscheinlich ein viel stärkerer Programmierer als beide.
Das heißt, ich habe keine Ahnung, was der Sinn des Fliegengewichts ist, und ich schäme mich nicht, es zuzugeben. (Siehe Kommentare für einen anderen Wikipedia-Eintrag, der sehr geholfen hat.)
Ich empfehle den Eintrag von Wikipedia zu Designmustern. Es ist sehr kurz und klar geschrieben. Sehr hilfreich, um eine Vorstellung davon zu bekommen, warum man sich mit einem bestimmten Entwurfsmuster herumschlagen könnte oder nicht. Ich persönlich neige dazu, die einfachsten zu finden, die am nützlichsten sind, und würde nicht zweimal darüber nachdenken, eine bestimmte Implementierung eines Musters an meine Bedürfnisse anzupassen.
Das sind Ideen, keine Blaupausen. In einigen Sprachen sind sie überhaupt nicht sehr gute Ideen. In anderen Fällen werden sie zu Recht als Trick angesehen, um die Designschwächen einer Sprache zu überwinden, die durch eine geringere Komplexität besser ausgeglichen werden könnten. Unabhängig davon tut es nicht weh, sie zu untersuchen und zu verstehen, welche Herausforderungen sie bewältigen sollen, bevor Sie sich für Ihre eigenen bevorzugten Lösungen entscheiden.
Mit welchen Problemen werden Sie konfrontiert? Sie könnten Gelegenheiten verpassen und mehr Zeit für Probleme aufwenden als nötig, es sei denn, Sie sind ein Programmierer, der bereits alles herausgefunden hat. Es ist wichtig, ein kritisches Auge für beliebte Programmierideen zu haben, aber es schadet nie zu verstehen, was die Leute denken, dass sie lösen, da dies Ihren eigenen bevorzugten Lösungen / Ansätzen mehr Klarheit verleiht.
Das Hauptproblem ist, dass Sie das Rad neu erfinden werden . Sie werden Muster genannt, weil sie häufig und vorhersehbar auftreten.
Selbst wenn Sie den Entwurfsmustern folgen, erhalten Sie möglicherweise einen schlechten Entwurf. Entwurfsmuster sind natürlich und Sie werden am Ende einen Teil davon in Ihrem Entwurf verwenden. Sie müssen sich wirklich bemühen, keines der Muster zu verwenden. Es gibt keinen Grund, Entwurfsmuster zu verurteilen. Wichtiger ist es, die richtigen Muster für Ihre Bedürfnisse auszuwählen
Sie verwenden ständig Entwurfsmuster, ohne es zu merken. Viele Standardbibliotheken in gängigen Sprachen wurden unter Berücksichtigung von Entwurfsmustern entwickelt. Ein Beispiel ist Javas FileReader
Bibliothek, die nach dem Dekorationsmuster designt wurde . Wenn Sie jetzt über Ihren eigenen Code sprechen , müssen Sie (in den meisten Fällen) keine Entwurfsmuster verwenden. Ein Entwurfsmuster ist eine "wiederverwendbare Lösung für ein häufig auftretendes Problem" , dh, es hilft Ihnen dabei, saubereren, besser wartbaren Code zu schreiben. Es liegt also wirklich an Ihnen, wie viel Sie vermeiden möchten, mit Spaghetti-Code zu enden.