Definición del modo adaptador: use dos clases incompatibles juntas, que pertenecen al modo estructural y requiere dos identidades: adaptado (adaptador) y adaptador (adaptador).
Por qué usar el modo adaptador
A menudo encontramos dos clases no relacionadas que deben combinarse. ¿Qué hacer?
Usando adaptador, cree una interfaz híbrida (híbrida) entre estas dos interfaces.
Cómo usar el modo adaptador
Para implementar el método adaptador, se ha mencionado en la sección "Regeneración de clase" de "Piense en Java", hay dos maneras: composición y herencia.
Supongamos que queremos conducir pilas, hay dos tipos: pilas cuadradas y pilas circulares.
La copia del código es la siguiente:
Squarepeg de clase pública {
Public void Insert (String Str) {
System.out.println ("Squarepeg Insert ():"+Str);
}
}
clase pública Roundpeg {
Public void InsertInToHole (string msg) {
System.out.println ("Roundpeg InsertInToHole ():"+msg);
}
}
Ahora hay una aplicación que requiere pilas cuadradas y pilas circulares. Luego necesitamos aplicar de manera integral estas dos clases no relacionadas.
La copia del código es la siguiente:
Pegadapter de clase pública se extiende Squarepeg {
Roundpeg privado Roundpeg;
Pegadapter público (Roundpeg PEG) (this.roundpeg = Peg;)
Public void Insert (String Str) {Roundpeg.insertinthole (Str);}
}
En el código anterior, RoundPeg pertenece al adaptado y es el adaptador. PegAdapter es un adaptador, adaptación adaptada (adaptador redondeo) y objetivo (objetivo squarepeg). De hecho, esta es una aplicación integral de métodos de composición y herencia.
Pegadapter primero hereda Squarepeg, luego usa la combinación de nuevo para generar el método de objeto, genera el objeto RoundPeg de RoundPeg y luego sobrecarga el método de inserción de clase principal (). A partir de aquí, también comprende la diferencia entre usar nuevos objetos y usar la herencia extendida para generar objetos.
Si tiene algo de experiencia en el uso de Java, ha descubierto que este patrón se usa a menudo.
Uso adicional
El Pegadapter sobre Squarepeg.
La copia del código es la siguiente:
interfaz pública irundpeg {
Public void InsertInToHole (String MSG);
}
interfaz pública isquarepeg {
Inserto de vacío público (String Str);
}
A continuación se presentan los nuevos Roundpeg y Squarepeg.
La copia del código es la siguiente:
clase pública squarepeg implementa isquarepeg {
Public void Insert (String Str) {
System.out.println ("Squarepeg Insert ():"+Str);
}
}
clase pública Roundpeg implementa iroundpeg {
Public void InsertInToHole (string msg) {
System.out.println ("Roundpeg InsertInToHole ():"+msg);
}
}
Aquí está el nuevo pegadapter llamado adaptador de dos vías:
La copia del código es la siguiente:
clase pública Pegadapter implementa iroundpeg, isquarepeg {
Roundpeg privado Roundpeg;
Squarepeg Squarepeg privado;
// Método de construcción
public Pegadapter (Roundpeg Peg) {this.roundpeg = Peg;}
// Método de construcción
Pegadapter público (Squarepeg Peg) (this.squarepeg = Peg;)
Public void Insert (String Str) {Roundpeg.insertinthole (Str);}
}
También hay un tipo llamado adaptadores conectables, que pueden obtener dinámicamente uno de varios adaptadores. Usando la tecnología de reflexión, puede descubrir dinámicamente métodos públicos en las clases.