Muster zur go und gemhvo

Wednesday 29th July 2020 20.21 Published by

Sehen wir uns ein Beispiel an, um das Befehlsmuster in Go zu veranschaulichen. Die Abhängigkeitsinjektion, die clientseitige Benutzeroberfläche und die Akteurmuster können Ihre Produktivität verbessern, Ihnen mehr Freiheit bieten und Ihre Programmierung optimieren. Anstatt die Standardlösungen zu verwenden, werden Sie kreativ und probieren Sie eines oder alle dieser drei unterschiedlichen Go-Muster aus. Das Befehlsmuster wird, wie der Name schon sagt, verwendet, wenn wir “Befehle” erstellen und ausführen möchten. Verschiedene Befehle haben eine eigene Implementierung, haben jedoch die gleichen Schritte für die Ausführung. Eine kuratierte Sammlung von idiomatischem Design & Anwendungsmustern für Go-Sprache. Nach den meisten Definitionen, mit nur 26 Schlüsselwörtern, einer knappen Spezifikation und einem Bekenntnis zu orthogonalen Funktionen, ist Go eine einfache Sprache. Von Go-Programmierern wird erwartet, dass sie die grundlegenden Bausteine der Sprache verwenden, um komplexere Abstraktionen zu komponieren. Im Laufe der Zeit werden best-in-class-Lösungen für häufig auftretende Probleme in der Regel entdeckt, freigegeben und repliziert. Diese Designmuster zeichnen Erbe aus anderen Sprachen, aber oft sehen und fühlen sich deutlich in Go. Ich möchte drei Muster ins Rampenlicht rücken, die ich immer wieder benutze. Wie die Abhängigkeitsinjektion kann die Idee des Schauspielermusters für verschiedene Menschen völlig unterschiedliche Dinge bedeuten. Aber im Kern ist es nicht viel mehr als eine autonome Komponente, die Input empfängt und wahrscheinlich Output erzeugt.

In Go haben wir ziemlich früh gelernt, dass eine großartige Möglichkeit, einen Schauspieler zu modellieren, eine unendliche Looping-Funktion ist, die auf einem Kanalblock auswählt. Die Goroutine fungiert als Synchronisationspunkt für Zustandsmutationen im Akteur, wodurch der Loop-Körper einthreadig ist – ein großer Gewinn für Klarheit und Verständlichkeit. In der Regel nennen wir diese Funktion `run` oder `loop` und definieren sie als eine Methode für einen Strukturtyp, der die Kanäle enthält. Durch die Verwendung dieses vereinfachten DI-Musters haben wir das Abhängigkeitsdiagramm explizit gemacht und das Ausblenden von Abhängigkeiten im globalen Zustand vermieden. Es lohnt sich auch, eine vereinfachte Definition von Abhängigkeit zu verwenden, d. h. nichts anderes als etwas, das eine Komponente für ihre Arbeit verwendet. Nach dieser Definition sind Logger und Metriken eindeutig Abhängigkeiten. Daher sollten sie daher mit anderen Abhängigkeiten identisch behandelt werden.

Das kann auf den ersten Blick etwas umständlich erscheinen, vor allem, wenn wir es gewohnt sind, z.B. Logger als zufällig oder allgegenwärtig zu betrachten. Aber indem wir sie auf den regulären DI-Mechanismus aufheben, tun wir mehr als eine konsistente Sprache, um Bedürfnisse auszudrücken – Beziehungen. Wir haben unsere Komponenten testbarer gemacht, indem wir sie von der gemeinsamen globalen Umgebung isoliert haben. Gute Designmuster haben in der Regel diesen Effekt – nicht nur die Verbesserung der Dinge, die sie verbessern sollen, sondern auch positive Anstoßeffekte während des gesamten Programms. Kuratierte Liste von Go-Entwurfsmustern, Rezepten und Idiomen Die grundlegende Einheit zum Implementieren des Befehlsmusters ist die Befehlsschnittstelle: Das Befehlsmuster ist nützlich, wenn Sie Aufgaben ausführen müssen, aber Sie möchten die Aufgabenverwaltung von der Ausführung der Aufgabe selbst trennen. Die klare Folge dieses Musters ist, dass Konstruktoren beginnen, sehr lang zu werden, vor allem, wenn die Geschäftsfähigkeit wächst. Das ist ein Preis. Aber es gibt auch einen bemerkenswerten Vorteil. Nämlich, es ist eine große Tugend, Abhängigkeiten an der Callsite explizit zu machen, insbesondere für zukünftige Leser und Betreuer Ihres Codes. Es ist sofort offensichtlich, dass der Handler eine Datenbank, ein Histogramm und einen Logger verwendet und verwendet. Es gibt keine Notwendigkeit, Abhängigkeitsbeziehungen weit weg vom Bauort zu jagen.

Betrachten Sie ein Paket mit einem Typ. Go-Programmierer modellieren diesen Typ und seinen Konstruktor häufig wie folgt. . Um dies zu demonstrieren, fügen wir einige Köche für unser Restaurant hinzu: Wenn der Befehl fehlerfrei sein kann, kann die Schnittstelle auch einen Fehlerrückgabewert enthalten: 👉 MakePizzaCommand, MakeSaladCommand und CleanDishesCommand implementieren alle die Befehlsschnittstelle mit ihrer Ausführungsmethode. Erwägen Sie stattdessen, dass Ihre Konstruktoren konkrete Typen zurückgeben und Paketkonsumenten ihre eigenen Schnittstellen nach Bedarf definieren lassen.

Categorised in: Uncategorized

|