Définition du mode adaptateur: utilisez deux classes incompatibles ensemble, qui appartiennent au mode structurel et nécessite deux identités: adaptaire (adaptateur) et adaptateur (adaptateur).
Pourquoi utiliser le mode adaptateur
Nous rencontrons souvent deux classes non liées qui doivent être combinées ensemble. ce qu'il faut faire?
À l'aide de l'adaptateur, créez une interface hybride (hybride) entre les deux interfaces.
Comment utiliser le mode adaptateur
Pour implémenter la méthode de l'adaptateur, il a été mentionné dans la section "régénération de classe" de "Think in Java", il existe deux façons: la composition et l'héritage.
Supposons que nous voulons conduire des piles, il existe deux types: les tas carrés et les piles circulaires.
La copie de code est la suivante:
classe publique squarepeg {
insert public void (String str) {
System.out.println ("SquarePeg insert ():" + str);
}
}
classe publique Roundpeg {
public void insertIntoHole (String msg) {
System.out.println ("RoundPeg insertIntoHole ():" + msg);
}
}
Il existe maintenant une application qui nécessite à la fois des tas carrés et des piles circulaires. Ensuite, nous devons appliquer de manière approfondie ces deux classes non liées.
La copie de code est la suivante:
classe publique Pegadapter étend Squarepeg {
Roundpeg privé Roundpeg;
PEGADAPTER PUBLIQUE (PEG ROUNDPEG) (This.RoundPeg = Peg;)
Insert public public (String Str) {Roundpeg.InsertToHole (Str);}
}
Dans le code ci-dessus, Roundpeg appartient à Adaptee et est l'adaptateur. Pegadapter est un adaptateur, adaptation adaptante (adaptateur roundpeg) et cible (cible squarepeg). En fait, il s'agit d'une application complète des méthodes de composition et d'héritage.
Pegadapter hérite d'abord SquarePeg, puis utilise la combinaison de New pour générer la méthode de l'objet, génère l'objet de rond de l'objet RoundPeg, puis surcharge la méthode INSERT () de classe parent (). De là, vous comprenez également la différence entre l'utilisation de nouveaux objets pour générer des objets et l'utilisation des étendues pour générer des objets.
Si vous avez une certaine expérience dans l'utilisation de Java, vous avez constaté que ce modèle est souvent utilisé.
Usage supplémentaire
Le pegadapter ci-dessus hérite de Squarepeg.
La copie de code est la suivante:
Interface publique IroundPeg {
public void insertIntoHole (String msg);
}
interface publique Isquarepeg {
Insert public public (String STR);
}
Vous trouverez ci-dessous le nouveau ronde et Squarepeg.
La copie de code est la suivante:
classe publique Squarepeg implémente Isquarepeg {
insert public void (String str) {
System.out.println ("SquarePeg insert ():" + str);
}
}
classe publique Roundpeg implémente IroundPeg {
public void insertIntoHole (String msg) {
System.out.println ("RoundPeg insertIntoHole ():" + msg);
}
}
Voici le nouveau pegadapter appelé adaptateur bidirectionnel:
La copie de code est la suivante:
classe publique Pegadapter implémente IroundPeg, Isquarepeg {
Roundpeg privé Roundpeg;
Squarepeg privé Squarepeg;
// Construire la méthode
PEGADAPTER PUBLIQUE (RoundPeg Peg) {this.roundPeg = pEg;}
// Construire la méthode
PEGADAPTER PUBLIQUE (Squarepeg Peg) (This.Squarepeg = pEg;)
Insert public public (String Str) {Roundpeg.InsertToHole (Str);}
}
Il existe également un type appelé adaptateurs enfichables, qui peuvent obtenir dynamiquement l'un des nombreux adaptateurs. En utilisant la technologie de réflexion, vous pouvez découvrir dynamiquement des méthodes publiques dans les classes.