Un modèle de conception est un modèle conceptuel qui vous aide à résoudre des problèmes de conception dans différents contextes. Il s'agit d'un modèle réutilisable que vous pouvez appliquer à un code de structuration.
Alors qu'il travaillait sur un projetIl est essentiel de se rappeler qu'il ne faut pas réinventer la roue. Si une solution à un problème s'est avérée efficace, sa réutilisation vous fera gagner beaucoup de temps et vous évitera quelques maux de tête. En cas de dilemme concernant l'architecture d'un système, nous avons développé quelques modèles pour faciliter le processus de conception.
Qu'est-ce qu'un modèle de conception ?
Un modèle de conception est un modèle conceptuel qui vous aide à résoudre des problèmes de conception dans différents contextes. Il s'agit en quelque sorte d'un modèle réutilisable que vous pouvez appliquer à une structure. code. Le fait est que les modèles de conception sont bien documentés, éprouvés et connus de tous. En d'autres termes, utilisez un modèle de conception approprié et soyez sûr que les autres initiés aux modèles de conception (c'est-à-dire vos collègues) comprendront vos idées sans problème.
Envie d'apprendre ? Voici le modèle de conception stratégique.
Le modèle de conception de la stratégie :
définit une famille d'algorithmes,
met en œuvre chacun des algorithmes en tant qu'entité distincte,
permet d'utiliser chacun des algorithmes de manière interchangeable dans un contexte donné.
Exemple concret ? L'authentification
Dans l'une de nos applications, nous avons mis en œuvre quelques stratégies d'authentification des requêtes. Nous autorisons l'authentification avec des cookies, des jetons JWT et des clés API. Cela ressemble à une famille d'algorithmes.
Jetons un coup d'œil à un exemple de mise en œuvre.
Notre famille d'algorithmes d'authentification est divisée en trois classes distinctes. Chaque classe définit le comportement concret ; c'est là que se trouvent tous les détails de la mise en œuvre :
module AuthenticationStrategies
classe CookiesAuthentication
def self.authenticate_request(request)
puts "J'implémente un algorithme d'authentification par cookie"
end
fin
classe JWTAuthentication
def self.authenticate_request(request)
puts "J'implémente un algorithme d'authentification jwt"
end
fin
classe ApiKeyAuthentication
def self.authenticate_request(request)
puts "J'implémente un algorithme d'authentification par clé d'api"
end
fin
fin
Ensuite, nous avons une classe contexte/client :
classe Authentification
def self.authenticate(authentication_strategy, request)
authentication_strategy.authenticate_request(request)
fin
fin
Je mets en œuvre un algorithme d'authentification par cookie Je mets en œuvre un algorithme d'authentification par jwt Je mets en œuvre un algorithme d'authentification par clé d'api
En résumé
Les modèles de conception sont des outils utiles pour résoudre les problèmes architecturaux,
la connaissance des modèles de conception améliore la communication sur l'architecture du système avec les autres développeurs,
le modèle de stratégie est adapté à vos besoins si vous disposez d'un ensemble d'algorithmes pouvant être utilisés de manière interchangeable dans un contexte donné.