
GO Modèles
Une collection organisée de modèles de conception et d'application idiomatiques pour le langage Go.
Une fourche de TMRTS / GO-Patdress mais a fusionné avec d'autres fourches impressionnantes. peut aller avec des modèles dans des exemples
REPOSSIONS FRAIT
- Mergé: https://github.com/nynicg/go-perterns
- Mergé: https://github.com/weichou1229/go-perterns
- Mergé: https://github.com/jianhan/go-perterns
- Mergé: https://github.com/sakari-ai/go-atterns
- Mergé : https: //github.com/restudy/go-atterns
Modèles de création
| Modèle | Description | Statut |
|---|
| Usine abstraite | Fournit une interface pour créer des familles d'objets relâchés | ✔ |
| Constructeur | Construit un objet complexe en utilisant des objets simples | ✔ |
| Méthode d'usine | Défote l'instanciation d'un objet à une fonction spécialisée pour créer des instances | ✔ |
| Pool d'objets | Instancie et maintient un groupe d'objets d'instances du même type | ✔ |
| Singleton | Restreint l'instanciation d'un type à un objet | ✔ |
Schémas structurels
| Modèle | Description | Statut |
|---|
| Pont | Découpe une interface de sa mise en œuvre afin que les deux puissent varier indépendamment | ✔ |
| Composite | Résume et donne accès à un certain nombre d'objets différents | ✔ |
| Décorateur | Ajoute un comportement à un objet, statiquement ou dynamiquement | ✔ |
| Façade | Utilise un type comme API pour un certain nombre d'autres | ✔ |
| Poids mouche | Réutilise les instances existantes d'objets avec un état similaire / identique pour minimiser l'utilisation des ressources | ✔ |
| Procuration | Fournit une substitution à un objet pour contrôler ses actions | ✔ |
| Adaptateur | Fournit une substitution à un objet pour contrôler ses actions | ✔ |
Modèles comportementaux
| Modèle | Description | Statut |
|---|
| Chaîne de responsabilité | Évite le couplage d'un expéditeur à récepteur en donnant plus qu'un objet une chance de gérer la demande | ✔ |
| Commande | Bundles une commande et des arguments à appeler plus tard | ✔ |
| Médiateur | Relie les objets et agit comme un proxy | ✔ |
| Mémento | Générer un jeton opaque qui peut être utilisé pour revenir à un état précédent | ✔ |
| Observateur | Fournir un rappel pour la notification des événements / modifications apportées aux données | ✔ |
| Enregistrement | Gardez une trace de toutes les sous-classes d'une classe donnée | ✔ |
| État | Résume un comportement variable pour le même objet en fonction de son état interne | ✔ |
| Stratégie | Permet de sélectionner le comportement d'un algorithme au moment de l'exécution | ✔ |
| Modèle | Définit une classe squelette qui s'enfère certaines méthodes aux sous-classes | ✔ |
| Visiteur | Sépare un algorithme d'un objet sur lequel il fonctionne | ✔ |
| Interprète | Interprétez votre propre langue ou les commandes composées | ✔ |
Modèles de synchronisation
| Modèle | Description | Statut |
|---|
| Variable de condition | Fournit un mécanisme pour que les threads abandonnent temporairement l'accès afin d'attendre une condition | ✘ |
| Verrouillage / mutex | Applique la limite d'exclusion mutuelle sur une ressource pour obtenir un accès exclusif | ✘ |
| Moniteur | Combinaison de mutex et de motifs variables de condition | ✘ |
| Verrouillage de lecture | Permet un accès parallèle en lecture, mais uniquement un accès exclusif sur les opérations d'écriture à une ressource | ✔ |
| Sémaphore | Permet de contrôler l'accès à une ressource commune | ✔ |
Modèles de concurrence
| Modèle | Description | Statut |
|---|
| Barrier N | Empêche un processus de procéder jusqu'à ce que les N processus atteignent la barrière | ✔ |
| Parallélisme borné | Complète un grand nombre de tâches indépendantes avec des limites de ressources | ✔ |
| Diffuser | Transfère un message à tous les destinataires simultanément | ✘ |
| Coroutines | Sous-programmes qui permettent la suspension et la reprise de l'exécution à certains endroits | ✘ |
| Générateurs | Donne une séquence de valeurs une à la fois | ✔ |
| Réacteur | Demultiplexes Demandes de service livrées simultanément à un gestionnaire de services et les envoie de manière synchrone aux gestionnaires de demande associés | ✘ |
| Parallélisme | Complète un grand nombre de tâches indépendantes | ✔ |
| Consommateur producteur | Sépare les tâches des exécutions de tâches | ✔ |
Motifs de messagerie
| Modèle | Description | Statut |
|---|
| Ventilateur | Funnels tâches à un puits de travail (par exemple le serveur) | ✔ |
| Fan-out | Distribue des tâches entre les travailleurs (par exemple producteur) | ✔ |
| Futures et promesses | Agit comme un détenteur d'un lieu d'un résultat initialement inconnu à des fins de synchronisation | ✔ |
| Publier / abonner | Transmet des informations à une collection de destinataires qui ont abonné à un sujet | ✔ |
| Pousser et tirer | Distribue des messages à plusieurs travailleurs, organisé en canneline | ✘ |
Modèles de stabilité
| Modèle | Description | Statut |
|---|
| Cloisons | Applique un principe de confinement de défaillance (c'est-à-dire empêche les échecs en cascade) | ✘ |
| Brise-circuit | Arrête le flux des demandes lorsque les demandes sont susceptibles d'échouer | ✔ |
| Date limite | Permet aux clients d'arrêter d'attendre une réponse une fois que la probabilité de réponse devient faible (par exemple, après avoir attendu 10 secondes pour un actualisation de la page) | ✔ |
| Échoué | Vérifie la disponibilité des ressources requises au début d'une demande et échoue si les exigences ne sont pas satisfaites | ✘ |
| Fabrication de mains | Demande un composant s'il peut prendre plus de chargement, s'il ne le peut pas, la demande est refusée | ✘ |
| État stable | Pour chaque service qui accumule une ressource, un autre service doit recycler cette ressource | ✘ |
Motifs de profilage
| Modèle | Description | Statut |
|---|
| Fonctions de synchronisation | Enveloppe une fonction et enregistre l'exécution | ✔ |
Idiomes
| Modèle | Description | Statut |
|---|
| Options fonctionnelles | Permet de créer des API propres avec des paramètres sains et des remplacements idiomatiques | ✔ |
Anti-motifs
| Modèle | Description | Statut |
|---|
Une implémentation de modèle
Exemples de saut