LEARN | Golang Design Patterns
Contenu
Contenu
Les Design Patterns sont des solutions réutilisables aux problèmes de programmation courants.
Voyons dans cet articles quelques design patterns de Golang :
Functional Options
Les Functional Options
sont une technique courante utilisée en Go pour fournir des options configurables aux fonctions. Plutôt que de spécifier plusieurs paramètres à une fonction, ce qui peut vite devenir difficile à gérer et créer du boilerplate inutile, nous pouvons passer des options en paramètres de ces fonctions.
Cela permet aux fonctions d’être plus flexibles, évolutives et faciles à utiliser.
Nous pouvons spécifier des paramètres par défaut, et l’utilisateur pourra surcharcher ces paramètres :
|
|
Nous instancierons un client de la façon suivante :
|
|
Les Functional Options
sont une technique courante en Go qui permet aux fonctions d’être plus flexibles et faciles à utiliser.
Ce pattern est particulièrement utile pour les fonctions avec de nombreuses options configurables.
Source: https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
Decorator
Le design pattern Décorateur
en Go permet d’ajouter des fonctionnalités supplémentaires à une struct existante en utilisant la composition plutôt que l’héritage.
Le principe de base du décorateur est de créer une interface qui décrit les fonctionnalités de base de la struct, puis de créer des implémentations concrètes de cette interface.
Ensuite, il est possible de créer des décorateurs
qui prennent en entrée une instance de l’interface de base et ajoutent des fonctionnalités supplémentaires.
Les décorateurs ont la même interface que l’objet de base, ce qui permet de les chaîner les uns aux autres.
|
|
Ici nous avons userService
qui contient des méthodes de manipulation de la base de donnée et relatives à un utilisateur.
Maintenant nous voulons ajouter un comportement de logging à ces méthodes.
Plutôt que de les ajouter dans le service, et de mélanger la logique business et de la logique technique, nous allons utiliser le pattern des décorateurs pour wrapper le service utilisateur et ajouter un logging par composition.
|
|
Nous avons pu ajouter un comportement de logging sur le service de l’utilisateur sans altérer le code business.
Note
En utilisant le pattern décorateur, il est facile d’ajouter des fonctionnalités supplémentaires à une struct existante sans avoir besoin de la modifier directement. Cela permet de garder le code propre et modulaire, tout en ajoutant de nouvelles fonctionnalités au besoin.