
Gehen Sie Muster
Eine kuratierte Sammlung idiomatischer Design- und Anwendungsmuster für die GO -Sprache.
Eine Gabel von TMRTS/GO-Patterns, aber mit anderen fantastischen Gabeln zusammengeführt. kann mit Mustern-in-Beispiele passen
Verschmolze Repos
- Fusions: https://github.com/nynicg/go-patterns
- Fusionged: https://github.com/Weichou1229/go-patterns
- Fusionged: https://github.com/jianhan/go-patterns
- Fusionged: https://github.com/sakari-ii/go-patterns
- Fusionged: https: //github.com/restudy/go-patterns
Kreation Muster
| Muster | Beschreibung | Status |
|---|
| Zusammenfassung Fabrik | Bietet eine Schnittstelle zum Erstellen von Familien mit befriedigten Objekten | ✔ |
| Erbauer | Erstellt ein komplexes Objekt mit einfachen Objekten | ✔ |
| Fabrikmethode | Defiert die Instanziierung eines Objekts auf eine spezielle Funktion zum Erstellen von Instanzen | ✔ |
| Objektpool | Instanziiert und verwaltet eine Gruppe von Objektinstanzen desselben Typs | ✔ |
| Singleton | Schränkt die Instanziierung eines Typs auf ein Objekt ein | ✔ |
Strukturmuster
| Muster | Beschreibung | Status |
|---|
| Brücke | Entkoppelt eine Schnittstelle von ihrer Implementierung, damit die beiden unabhängig variieren können | ✔ |
| Zusammengesetzt | Fasst und bietet Zugriff auf eine Reihe verschiedener Objekte | ✔ |
| Dekorateur | Fügt einem Objekt statisch oder dynamisch Verhalten hinzu | ✔ |
| Fassade | Verwendet einen Typ als API für eine Reihe anderer | ✔ |
| Fliegengewicht | Wiederverwendet vorhandenen Instanzen von Objekten mit ähnlichem/identischem Zustand, um die Ressourcenverbrauch zu minimieren | ✔ |
| Proxy | Bietet ein Ersatz für ein Objekt, um seine Aktionen zu steuern | ✔ |
| Adapter | Bietet ein Ersatz für ein Objekt, um seine Aktionen zu steuern | ✔ |
Verhaltensmuster
| Muster | Beschreibung | Status |
|---|
| Verantwortungskette | Vermeidet die Kopplung eines Absenders an den Empfänger, indem Sie mehr als Objekt die Möglichkeit geben, die Anfrage zu behandeln | ✔ |
| Befehl | Bündelt einen Befehl und Argumente, die Sie später anrufen sollten | ✔ |
| Vermittler | Verbindet Objekte und fungiert als Proxy | ✔ |
| Erinnerung | Generieren Sie ein undurchsichtiges Token, mit dem Sie in einen früheren Zustand zurückkehren können | ✔ |
| Beobachter | Geben Sie einen Rückruf zur Benachrichtigung über Ereignisse/Änderungen an Daten an | ✔ |
| Registrierung | Behalten Sie alle Unterklassen einer bestimmten Klasse im Auge | ✔ |
| Zustand | Kapuliert das unterschiedliche Verhalten für dasselbe Objekt basierend auf seinem internen Zustand | ✔ |
| Strategie | Ermöglicht es, das Verhalten eines Algorithmus zur Laufzeit auszuwählen | ✔ |
| Vorlage | Definiert eine Skelettklasse, die einige Methoden zu Unterklassen vertieft | ✔ |
| Gast | Trennt einen Algorithmus von einem Objekt, auf dem er arbeitet | ✔ |
| Interpreter | Interpretieren Sie Ihre eigene Sprache oder komponierte Befehle | ✔ |
Synchronisationsmuster
| Muster | Beschreibung | Status |
|---|
| Zustandsvariable | Bietet einen Mechanismus für Threads, um den Zugriff vorübergehend aufzugeben, um auf einen Zustand zu warten | ✘ |
| Lock/Mutex | Erzwingt gegenseitige Ausschlussgrenze für eine Ressource, um einen exklusiven Zugriff zu erhalten | ✘ |
| Monitor | Kombination von Muster von Mutex und Zustandsvariablen | ✘ |
| Leseschloss | Ermöglicht parallele Lesezugriff, jedoch nur exklusiver Zugriff auf Schreibvorgänge auf eine Ressource | ✔ |
| Semaphor | Ermöglicht die Kontrolle des Zugriffs auf eine gemeinsame Ressource | ✔ |
Parallelitätsmuster
| Muster | Beschreibung | Status |
|---|
| N-Barrier | Verhindert, dass ein Prozess fortschreitet, bis alle N -Prozesse bis zur Barriere erreichen | ✔ |
| Parallelität begrenzt | Erledigt eine große Anzahl unabhängiger Aufgaben mit Ressourcengrenzen | ✔ |
| Übertragen | Überträgt eine Nachricht gleichzeitig an alle Empfänger | ✘ |
| Coroutinen | Unterroutinen, die die Ausführung und Wiederaufnahme der Ausführung an bestimmten Orten ermöglichen | ✘ |
| Generatoren | Ergibt eine Sequenz von Werten nacheinander | ✔ |
| Reaktor | Demultiplexes Serviceanfragen, die gleichzeitig an einen Service -Handler geliefert werden | ✘ |
| Parallelität | Erledigt eine große Anzahl unabhängiger Aufgaben | ✔ |
| Erzeugerverbraucher | Trennt Aufgaben von Aufgabenausführungen | ✔ |
Messaging -Muster
| Muster | Beschreibung | Status |
|---|
| Fan-in | Trichteraufgaben in eine Arbeitssöke (z. B. Server) | ✔ |
| Fan-Out | Aufgaben unter Arbeitnehmern verteilt (z. B. Produzent) | ✔ |
| Futures & Versprechen | Fungiert als Orteinhaber eines Ergebnisses, das ursprünglich für Synchronisationszwecke unbekannt ist | ✔ |
| Veröffentlichen/abonnieren | Übergibt Informationen an eine Sammlung von Empfängern, die ein Thema abonniert haben | ✔ |
| Push & Pull | Verteilt Nachrichten an mehrere Arbeiter, die in einer Pipeline angeordnet sind | ✘ |
Stabilitätsmuster
| Muster | Beschreibung | Status |
|---|
| Schotter | Erzwingt ein Prinzip der Versagensbehälter (dh verhindert Kaskadierfehler). | ✘ |
| Breaker | Stoppt den Fluss der Anfragen, wenn Anfragen wahrscheinlich fehlschlagen | ✔ |
| Frist | Mit Clients können Sie aufhören, auf eine Antwort zu warten, sobald die Reaktionswahrscheinlichkeit niedrig wird (z. B. nach 10 Sekunden auf eine Seite Aktualisierung). | ✔ |
| Fail-Fast | Überprüft die Verfügbarkeit der erforderlichen Ressourcen zu Beginn einer Anfrage und fällt fehl, wenn die Anforderungen nicht erfüllt sind | ✘ |
| Handschütteln | Fragt eine Komponente, ob sie mehr Last benötigen kann. Wenn dies nicht der Fall ist, wird die Anfrage abgelehnt | ✘ |
| Gleichgewichtszustand | Für jeden Dienst, der eine Ressource ansammelt, muss ein anderer Service diese Ressource recyceln | ✘ |
Profilerierungsmuster
| Muster | Beschreibung | Status |
|---|
| Zeitfunktionen | Wickelt eine Funktion und protokolliert die Ausführung | ✔ |
Redewendungen
| Muster | Beschreibung | Status |
|---|
| Funktionsoptionen | Ermöglicht es, saubere APIs mit vernünftigen Standardeinstellungen und idiomatischen Überschreibungen zu erstellen | ✔ |
Anti-Muster
| Muster | Beschreibung | Status |
|---|
Eine Musterimplementierung
GO-PUATTER-EXOMPLEN