Résolution conditionnelle dans Unity : exploration du modèle de stratégie
Contexte
La résolution conditionnelle vous permet pour injecter différentes classes d’implémentation en fonction de conditions spécifiques. Dans le scénario donné, vous souhaitez résoudre conditionnellement différents fournisseurs d'authentification en fonction du type d'authentification (par exemple, Twitter ou Facebook).
Solution : mise en œuvre du modèle de stratégie
Une approche recommandée consiste à utiliser le modèle de stratégie. Ce modèle dissocie la logique d'authentification du contrôleur, ce qui facilite l'ajout ou la suppression de fournisseurs d'authentification sans modifier la conception.
Définition des interfaces
- IAuthenticate : Expose la méthode d'authentification Login.
- IAuthenticateStrategy : définit l'interface de la stratégie de connexion qui gère différents fournisseurs d'authentification.
Mise en œuvre des fournisseurs d'authentification
- TwitterAuth et FacebookAuth : implémentez l'interface IAuthenticate et fournissez des implémentations de connexion spécifiques.
- De plus, ils incluent la méthode AppliesTo, qui indique si le fournisseur s'applique à un nom de fournisseur donné. (par exemple, TwitterAuth s'applique à « TwitterAuth »).
Mise en œuvre de la stratégie
- AuthenticateStrategy : implémente l'interface IAuthenticateStrategy et gère un ensemble de fournisseurs d'authentification .
- La méthode de connexion accepte le nom d'un fournisseur et les informations d'identification de l'utilisateur et sélectionne le fournisseur approprié à l'aide d'AppliesTo.
Enregistrement Unity
Configurez Unity pour enregistrer les types suivants :
- IAuthentifier les implémentations ( TwitterAuth et FacebookAuth) avec une instance unique noms.
- IAuthenticateStrategy avec un constructeur d'injection qui inclut un tableau d'instances IAuthenticate.
Utilisation dans le contrôleur
- Injecter l'interface IAuthenticateStrategy dans le constructeur du contrôleur.
- Utilisez le login méthode de la stratégie pour effectuer des opérations de connexion avec le nom du fournisseur spécifié.
Option alternative : configuration Unity
Alternativement, vous pouvez enregistrer les types directement dans votre fichier unity.config au lieu d'utiliser la programmation du conteneur Unity.
Avantages de la résolution conditionnelle avec la stratégie Modèle
-
Extensibilité : Ajoutez ou supprimez facilement des fournisseurs d'authentification en mettant à jour la configuration Unity ou en ajoutant de nouvelles implémentations de stratégie.
-
Découplage : Isole la logique d'authentification de le contrôleur, permettant une gestion flexible des fournisseurs d'authentification.
-
Testabilité : Chaque authentification Le fournisseur peut être testé indépendamment grâce aux interfaces du modèle de stratégie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn