Les patrons de conception en Go
Le catalogue des exemples en Go
Patrons de création
Fabrique abstraite
Permet de créer des familles d’objets apparentés sans préciser leur classe concrète.
Monteur
Permet de construire des objets complexes étape par étape. Ce patron permet de construire différentes variations ou représentations d’un objet en utilisant le même code de construction.
Fabrique
Définit une interface pour la création d’objets dans une classe mère, mais délègue aux sous-classes le choix des types d’objets à créer.
Prototype
Permet de créer de nouveaux objets à partir d’objets existants sans rendre le code dépendant de leur classe.
Singleton
Permet de garantir que l’instance d’une classe n’existe qu’en un seul exemplaire, tout en fournissant un point d’accès global à cette instance.
Patrons structurels
Adaptateur
Permet de faire collaborer des objets ayant des interfaces normalement incompatibles.
Pont
Permet de séparer une grosse classe ou un ensemble de classes connexes en deux hiérarchies — abstraction et implémentation — qui peuvent évoluer indépendamment l’une de l’autre.
Composite
Permet d'agencer les objets dans des arborescences afin de pouvoir traiter celles-ci comme des objets individuels.
Décorateur
Permet d’affecter dynamiquement de nouveaux comportements à des objets en les plaçant dans des emballeurs qui implémentent ces comportements.
Façade
Procure une interface qui offre un accès simplifié à une librairie, un framework ou à n’importe quel ensemble complexe de classes.
Poids mouche
Permet de stocker plus d’objets dans la RAM en partageant les états similaires entre de multiples objets, plutôt que de stocker les données dans chaque objet.
Procuration
Permet de fournir un substitut d’un objet. Une procuration donne le contrôle sur l’objet original, vous permettant d’effectuer des manipulations avant ou après que la demande ne lui parvienne.
Patrons comportementaux
Chaîne de responsabilité
Permet de faire circuler une demande dans une chaîne de handlers. Lorsqu'un handler reçoit une demande, il décide de la traiter ou de l’envoyer au handler suivant de la chaîne.
Commande
Prend une action à effectuer et la transforme en un objet autonome qui contient tous les détails de cette action. Cette transformation permet de paramétrer des méthodes avec différentes actions, planifier leur exécution, les mettre dans une file d’attente ou d’annuler des opérations effectuées.
Itérateur
Permet de parcourir les éléments d’une collection sans révéler sa représentation interne (liste, pile, arbre, etc.).
Médiateur
Permet de diminuer les dépendances chaotiques entre les objets. Ce patron restreint les communications directes entre les objets et les force à collaborer uniquement via un objet médiateur.
Mémento
Permet de sauvegarder et de rétablir l'état précédent d’un objet sans révéler les détails de son implémentation.
Observateur
Permet de mettre en place un mécanisme de souscription pour envoyer des notifications à plusieurs objets, au sujet d’événements concernant les objets qu’ils observent.
État
Modifie le comportement d’un objet lorsque son état interne change. L’objet donne l’impression qu’il change de classe.
Stratégie
Permet de définir une famille d’algorithmes, de les mettre dans des classes séparées et de rendre leurs objets interchangeables.
Patron de méthode
Permet de mettre le squelette d’un algorithme dans la classe mère, mais laisse les sous-classes redéfinir certaines étapes de l’algorithme sans changer sa structure.
Visiteur
Permet de séparer les algorithmes et les objets sur lesquels ils opèrent.