23 Modèle de conception-modèle d'adaptateur

Mode adaptateur

  1. 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
  2. Le mode adaptateur est un mode structurel
  3. Principalement divisé en trois catégories: adaptateur de classe, adaptateur d'objet, adaptateur d'interface

Comment fonctionne l'adaptateur

  1. Mode adaptateur: convertissez l'interface d'une classe en une autre interface, de sorte que 原本接口不兼容的类可以compatible
  2. Du point de vue de l'utilisateur, la personne correspondante ne peut pas être vue, elle est découplée
  3. 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
  4. L'utilisateur reçoit le feedback et sent qu'il n'interagit qu'avec l'interface cible

Insérez la description de l'image ici

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

Insérez la description de l'image ici

Tension220V

Une classe qui produit une tension de 220V

Insérez la description de l'image ici

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

Insérez la description de l'image ici

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é

Insérez la description de l'image ici

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

Insérez la description de l'image ici

Client

Insérez la description de l'image ici

Résumé des adaptateurs de classe

  1. 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
  2. Inconvénients: les méthodes de la classe src seront exposées dans l'adaptateur, ce qui augmente également le coût d'utilisation
  3. 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

Insérez la description de l'image ici

Tension220V

L'objet Voltage220V n'a pas changé par rapport à avant

Insérez la description de l'image ici

Tension5V

L'objet Voltage5V n'a pas changé par rapport à avant

Insérez la description de l'image ici

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.

Insérez la description de l'image ici

Téléphone

L'objet Téléphone n'a pas changé par rapport à avant

Insérez la description de l'image ici

Client

Insérez la description de l'image ici

Résumé de l'adaptateur d'objet

  1. 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.
  2. 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

Insérez la description de l'image ici

Tension220V

L'objet Voltage220V n'a pas changé par rapport à avant

Insérez la description de l'image ici

Tension5V

L'objet Voltage5V n'a pas changé par rapport à avant

Insérez la description de l'image ici

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.

Insérez la description de l'image ici

Téléphone

L'objet Téléphone n'a pas changé par rapport à avant

Insérez la description de l'image ici

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

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44642403/article/details/114199501
conseillé
Classement