Mode adaptateur
- Le modèle d'adaptateur convertit l'interface d'une certaine classe en une autre représentation d'interface attendue par le client. L'objectif principal est la compatibilité, afin que deux classes qui ne peuvent pas fonctionner ensemble en raison d'une incompatibilité d'interface puissent fonctionner ensemble. L'alias est Wrapper
- Le mode adaptateur est un mode structurel
- Principalement divisé en trois catégories: adaptateur de classe, adaptateur d'objet, adaptateur d'interface
Comment fonctionne l'adaptateur
- Mode adaptateur: convertissez l'interface d'une classe en une autre interface, de sorte que
原本接口不兼容的类可以
compatible - Du point de vue de l'utilisateur, la personne correspondante ne peut pas être vue, elle est découplée
- L'utilisateur appelle la méthode d'interface cible transformée par l'adaptateur, et l'adaptateur appelle ensuite la méthode d'interface appropriée de la personne adaptée
- L'utilisateur reçoit le feedback et sent qu'il n'interagit qu'avec l'interface cible
Adaptateur de classe
introduction de base
La classe Adapter implémente l'interface de classe dst en héritant de la classe src pour terminer l'adaptation de src-> dst
Implémentation de l'adaptateur de classe
Pour expliquer l'adaptateur à l'aide de l'exemple d'un chargeur dans la vie, notre chargeur de téléphone portable lui-même est équivalent à l'adaptateur, 220V AC est équivalent à src (adapté), le chargeur est connecté à l'interface du téléphone mobile pour sortir 5V DC (cible) , via le téléphone portable Le chargeur passera de 220V à 5V à l'avenir
Tension220V
Une classe qui produit une tension de 220V
Tension5V
Une interface de tension 5 V définit la méthode de sortie de tension 5 V, qui est implémentée pour l'adaptateur
VoltageAdapter
Un adaptateur qui hérite de la classe Voltage220V pour implémenter l'interface Voltage5V, implémente la méthode output5V et obtient la tension 22V dans la méthode output5V pour le traitement, et revient une fois le traitement terminé
Téléphone
La classe de charge de téléphone mobile a une méthode de charge qui reçoit une interface de type Voltage5V pour charger le téléphone mobile
Client
Résumé des adaptateurs de classe
- Inconvénients: Java est un mécanisme d'héritage unique et la classe src doit être héritée dans l'adaptateur de classe. Ceci est un inconvénient, et le dst doit être une interface ici, ce qui présente certaines limitations
- Inconvénients: les méthodes de la classe src seront exposées dans l'adaptateur, ce qui augmente également le coût d'utilisation
- Avantages: Puisqu'il hérite de la classe src, il peut réécrire la méthode de classe src en fonction des besoins, ce qui améliore la flexibilité de l'adaptateur
Adaptateur d'objet
Implémentation de l'adaptateur d'objet
Utilisez l'adaptateur d'objet pour améliorer l'exemple précédent
Le mode adaptateur d'objet et le mode adaptateur de classe sont fondamentalement les mêmes, sauf que la classe Adapter n'hérite pas de la classe src, mais contient une instance de la classe src pour résoudre le problème de compatibilité.
即持有src类,实现dst接口,完成src->dst的适配
Selon le "principe de réutilisation synthétique", essayez d'utiliser la classe de relations d'association pour remplacer la relation d'héritage dans le système
Le mode d'adaptateur d'objet est le plus couramment utilisé parmi les adaptateurs
Tension220V
L'objet Voltage220V n'a pas changé par rapport à avant
Tension5V
L'objet Voltage5V n'a pas changé par rapport à avant
VoltageAdapter
L'objet VoltageAdapter n'hérite pas de Voltage220V, mais agrège les objets Voltage220V via l'agrégation et obtient des instances Voltage220V via le constructeur.
Téléphone
L'objet Téléphone n'a pas changé par rapport à avant
Client
Résumé de l'adaptateur d'objet
- L'adaptateur d'objet et l'adaptateur de classe sont considérés comme étant la même implémentation, mais l'implémentation est différente. Selon le principe de la réutilisation composite, la composition est utilisée au lieu de l'héritage, ce qui résout la limitation des adaptateurs de classe qui doivent hériter de src, et non plus nécessite que dst soit une interface.
- Avantages: moindre coût et plus de flexibilité
Adaptateur d'interface
Implémentation de l'adaptateur d'interface
Lorsque vous n'avez pas besoin d'implémenter les méthodes fournies par l'interface, vous pouvez d'abord concevoir une classe abstraite pour implémenter l'interface, et fournir une implémentation par défaut (méthode vide) pour chaque méthode dans l'interface, puis la sous-classe de la classe abstraite peut remplacer sélectivement la classe parente Certaines des façons de répondre à la demande
Convient aux situations où une interface ne souhaite pas utiliser toutes ses méthodes
Tension220V
L'objet Voltage220V n'a pas changé par rapport à avant
Tension5V
L'objet Voltage5V n'a pas changé par rapport à avant
VoltageAdapter
L'objet VoltageAdapter est modifié en une classe abstraite, et plusieurs interfaces liées à la tension sont implémentées, et l'implémentation par défaut de toutes les interfaces est fournie. Lorsque le client utilise quoi que ce soit, vous pouvez personnaliser l'implémentation de la méthode correspondante.
Téléphone
L'objet Téléphone n'a pas changé par rapport à avant
Client
Lorsque le client crée l'adaptateur, il réécrit l'implémentation par défaut de l'adaptateur en fonction de ses propres exigences