Maison  >  Article  >  Java  >  Comment comprendre et utiliser le modèle d'adaptateur Java ?

Comment comprendre et utiliser le modèle d'adaptateur Java ?

PHPz
PHPzavant
2023-04-23 09:19:141370parcourir

1. Qu'est-ce que le mode adaptateur ?

En fait, tout le monde devrait connaître le mot adaptateur. Nous savons que l'iPhone d'Apple ne fournit plus de prise de charge. Il n'y a qu'un seul câble de données dans la boîte, nous ne pouvons donc pas utiliser ce câble de données seul pour le brancher en 220V. Il se charge sur la carte, nous devons donc acheter un adaptateur pour connecter la carte au téléphone portable. C'est l'adaptateur.

En fait, il peut également arriver dans la conception de logiciels que les composants avec certaines fonctions métier qui doivent être développées existent déjà dans la bibliothèque de composants existante, mais qu'ils soient incompatibles avec les spécifications d'interface du système actuel si ces composants sont refaits. -développé, le coût sera très élevé, alors l'utilisation du mode adaptateur peut bien résoudre ces problèmes.

2. Définition du modèle d'adaptateur

Modèle d'adaptateur : convertissez l'interface d'une classe en une autre interface souhaitée par le client, afin que les classes qui ne peuvent pas fonctionner ensemble en raison d'interfaces incompatibles puissent fonctionner ensemble.

Le modèle d'adaptateur est divisé en deux types : le modèle structurel de classe et le modèle structurel d'objet. Le premier a un degré de couplage entre les classes plus élevé que le second et nécessite que les programmeurs comprennent la structure interne des composants pertinents dans la bibliothèque de composants existante, donc l'application est relativement moindre.

3. Avantages et inconvénients du modèle d'adaptateur

Avantages :

  • Le client peut appeler de manière transparente l'interface cible via l'adaptateur

  • Réutilise les classes existantes, les programmeurs n'ont pas besoin de modifier le code d'origine et de réutiliser les classes existantes. classes La classe adaptateur

  • découple la classe cible et la classe adaptateur, résolvant ainsi le problème des interfaces incohérentes entre la classe cible et la classe adaptateur

  • Elle est conforme au principe d'ouverture et de fermeture dans de nombreux scénarios commerciaux

Inconvénients :

  • Le processus d'écriture de l'adaptateur doit être pleinement pris en compte en fonction du scénario commercial, ce qui peut augmenter la complexité du système

  • augmente la difficulté de lecture du code et réduit la lisibilité du code. rendre le code système désordonné

4. La structure et la mise en œuvre du modèle d'adaptateur

(La structure suivante est référencée sur Internet)

La structure du modèle :

  • Interface Target (Target) : L'interface interface attendue par l'activité système actuelle, il peut s'agir d'une classe abstraite ou d'une classe Interface

  • Classe Adaptee : C'est l'interface de composant dans la bibliothèque de composants existante qui est accessible et adaptée

  • Classe Adapter : C'est un convertisseur qui s'adapte par héritage ou référence Objet de l'adaptateur, convertit l'interface de l'adaptateur en interface cible, permettant aux clients d'accéder à l'adaptateur au format de l'interface cible

La structure du modèle d'adaptateur de classe :

Comment comprendre et utiliser le modèle dadaptateur Java ?

Le structure du modèle d'adaptateur d'objet :

Comment comprendre et utiliser le modèle dadaptateur Java ?

5. Implémentation du code du mode adaptateur

A Utilisez une méthode de combinaison pour implémenter l'adaptateur :

Nous avons maintenant une prise d'ordinateur portable triphasée, mais nous devons maintenant l'utiliser. une prise biphasée pour le chargement, nous devons donc Cette prise est équipée d'un adaptateur biphasé :

Comment comprendre et utiliser le modèle dadaptateur Java ?

Interface de prise triphasée :

/**
 * 三相插座接口
 */
public interface ThreePlugIf {

    //使用三相电流供电
    public void powerWithThree();

}

Prise biphasée standard nationale :

/**
 * 国标的二相插座
 */
public class GBTowPlug {
    public void powerWithTwo(){
        System.out.println("使用二相电流供电");
    }
}

Ordinateur portable :

/**
 * 笔记本
 */
public class NoteBook {

    private ThreePlugIf plug;

    public NoteBook(ThreePlugIf plug){
        this.plug = plug;
    }

    //使用插座充电
    public void charge(){
        plug.powerWithThree();
    }
}

Adaptateur de prise triphasée à biphasée :

/**
 * 三相转二相的插座适配器
 */

public class TwoPlugAdapter implements ThreePlugIf {


    private GBTowPlug plug;

    public TwoPlugAdapter(GBTowPlug plug) {
        this.plug = plug;
    }

    @Override
    public void powerWithThree() {
        System.out.println("通过转换");
        plug.powerWithTwo();
    }
}

Classe de test :

public class Test {

    public static void main(String[] args) {

    GBTowPlug two = new GBTowPlug();
    ThreePlugIf three = new TwoPlugAdapter(two);
    NoteBook nb = new NoteBook(three);
    nb.charge();
	}
}

Résultat de sortie :

Utilisation d'une alimentation en courant biphasé par conversion

L'adaptateur utilisant la méthode de combinaison est appelé adaptateur d'objet

Caractéristiques :

Combinez "l'adapté" en tant qu'objet dans l'adaptateur Dans la classe, modifiez l'interface cible et emballez-la dans l'adaptateur

B Utilisez l'héritage pour implémenter l'adaptateur :

Comment comprendre et utiliser le modèle dadaptateur Java ?

Héritez l'adaptateur. :

/**
 * 采用继承方式的插座适配器
 */
public class TwoPlugAdapterExtends extends GBTowPlug implements ThreePlugIf{
    @Override
    public void powerWithThree() {
        System.out.println("借助继承适配器");
        this.powerWithTwo();
    }
}

Classe de test :

public class Test {

    public static void main(String[] args) {

    GBTowPlug two = new GBTowPlug();
    ThreePlugIf three = new TwoPlugAdapter(two);
    NoteBook nb = new NoteBook(three);
    nb.charge();

    //使用继承方法
    three = new TwoPlugAdapterExtends();
    nb = new NoteBook(three);
    nb.charge();
}
}

Sortie :

Par conversion

Utiliser une alimentation à courant biphasé

À l'aide d'un adaptateur d'héritage

Utiliser une alimentation à courant biphasé

La méthode d'héritage est appelée une classe adaptateur

Caractéristiques :

Grâce à l'héritage multiple d'interfaces incompatibles, la correspondance de l'interface cible est obtenue, et une seule est une certaine classe est utilisée pour implémenter l'adaptation

6. Le système développé précédemment a des classes qui répondent aux exigences fonctionnelles du nouveau système, mais son interface n'est pas cohérente avec l'interface du nouveau système

  • Utilisez des composants fournis par des tiers, mais la définition de l'interface du composant est différente de la définition de l'interface requis par vous

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer