Modo de adaptador Java
Recientemente, he estado aprendiendo conceptos básicos de Java y tengo muchas dudas cuando estaba aprendiendo adaptadores. Busqué la información en línea y encontré mucha información sobre el adaptador, pero este artículo es bueno. Aquí hay un registro, puede leer lo que necesita.
El patrón del adaptador es convertir la interfaz de una clase en otra interfaz que el cliente espera, para que dos clases cuyas interfaces originales no coincidan y no puedan trabajar juntas pueden funcionar juntas. Hablando funcionalmente, las clases que son incompatibles con estas interfaces generalmente tienen las mismas funciones o similares. Por lo general, resolvemos este tipo de incompatibilidad de la interfaz modificando la interfaz de esta clase, pero si no estamos dispuestos a modificar la interfaz original para una aplicación, o no tenemos el código fuente del objeto, el modo adaptador será útil.
Ventajas del adaptador:
1. Desacoplar la clase de destino y la clase de adaptador
2. Aumente la transparencia y la reutilización de la clase, encapsulen la implementación específica en la clase de adaptador, que es transparente para la clase del cliente y mejora la reutilización del adaptador.
3. Tanto la flexibilidad como la expansión son muy buenas, y se ajustan al principio de apertura y cierre
Los roles involucrados en el adaptador incluyen lo siguiente:
Objetivo: Define la interfaz específica utilizada por un cliente.
Cliente: use la interfaz de destino para cooperar con objetos consistentes con la interfaz de destino.
Adaptado: una interfaz existente que necesita ser adaptada.
Adaptador: responsable de convertir la interfaz de Adaptee en la interfaz de Target. Los adaptadores son una clase concreta, que es el núcleo de este patrón.
Los adaptadores se dividen en dos tipos: adaptador de clase y adaptador de objetos, que se describirá en detalle a continuación.
Adaptador de clase
El llamado adaptador de clase se refiere al adaptador adaptador que hereda nuestro adaptado adaptador e implementa el objetivo de la interfaz de destino. Dado que es una única herencia en Java, este adaptador solo puede servir al adaptado adaptador heredado. El código es el siguiente:
Adaptado
paquete com.bluemsun.classadapter; public class Person {private int id; nombre de cadena privada; / *** La persona solo puede hablar inglés ahora*/ public void Saysenglish () {System.out.println ("¡La persona puede decir inglés!"); } /*** omitir setter, getter. */}Interfaz de destino (objetivo)
paquete com.bluemsun.classadapter;/*** El objetivo requiere que esa persona pueda hablar inglés, francés y japonés. Pero ahora la persona solo puede hablar inglés * @Author Administrator * */Public Interface Target_person {void saysenglish (); vacío dice french (); void saysjapanese ();}Adaptador
Adaptador de clase com.bluemsun.classadapter;/***, porque hereda la persona, y Java solo puede heredar en un solo, por lo que este adaptador solo sirve a la clase de persona* Este adaptador permite que la clase de persona implementa los métodos especificados por la interfaz de destino sin modificar el código fuente* @autor administrador**/clase pública de clase pública Adapter extensiones de la persona de la persona @pero SaysFrench () {System.out.println ("¡La persona puede decir francés!"); } @Override public void SaysJapanese () {System.out.println ("¡La persona puede decir japonesa!"); }}Cliente
paquete com.bluemsun.classadapter; prueba de clase pública {public static void main (string [] args) {target_person persona = new adapter_person (); persona.sayenglish (); Person.sayFrench (); persona.sayjapanese (); }}Los pocos códigos simples anteriores demuestran el papel de los adaptadores de clase. Como dijimos al principio, este adaptador de adaptador solo puede servir a la clase de la persona. En este momento, puede preguntarse, si necesito adaptarme a muchas clases, ¿necesito escribir un adaptador para cada clase a la que necesite adaptarse? ¿Hay una manera más flexible? La respuesta es: ¡sí! Este es el adaptador de objeto del que estamos hablando a continuación.
Adaptador de objetos
El llamado adaptador de objeto, en pocas palabras, significa que el adaptador implementa nuestra interfaz de destino, pero no hereda las clases que deben adaptarse. En cambio, se adapta pasando al constructor del adaptador. El código es el siguiente: (objetivo, adaptado igual que el anterior)
Adaptador
paquete com.bluemsun.objectDapter; import com.bluemsun.classadapter.person; import com.bluemsun.classadapter.target_person;/** * adaptador de objeto, adaptadores de clases, implementos de clase, el adaptador de objetos solo puede adaptar múltiples fuentes a la tarea * @author administrador * * */public class Adapter Adapter Adapters { persona privada; // pasar a la persona de la clase adaptada en el constructor public adapter_person (persona persona) {this.person = persona; } // Implementar sayenglish () en la interfaz de destino-call sayenglish () en adaptee @Override public void sayenglish () {this.person.sayenglish (); } // Implementar otros métodos en la interfaz @Override public void sayFrench () {System.out.println ("¡La persona puede decir francés!"); } @Override public void SaysJapanese () {System.out.println ("¡La persona puede decir japonesa!"); }}Cliente
paquete com.bluemsun.objectdapter; import com.bluemsun.classadapter.person; import com.bluemsun.classadapter.target_person; test public class {public static void main (string [] args) {Target_person Person = new adapter_person (nueva persona ()); persona.sayenglish (); Person.sayFrench (); persona.sayjapanese (); }}Los adaptadores de objetos pueden adaptarse a múltiples clases con adaptaciones. Simplemente pase diferentes clases con adaptaciones en el constructor del adaptador. Flexibilidad.
Ventajas de los adaptadores de clase:
1. Dado que la clase de adaptador es una subclase de la clase de adaptador, algunos métodos de adaptador se pueden reemplazar en la clase de adaptador, lo que hace que el adaptador sea más flexible.
Desventajas de los adaptadores de clase:
1. Para idiomas como Java y C# que no admiten múltiples herencias, como máximo una clase de adaptador puede adaptarse a al menos una clase de adaptador a la vez, y la clase de abstracto de destino solo puede ser una interfaz, no una clase. Su uso tiene ciertas limitaciones. No se puede adaptar a una clase de adaptador y su subclase a la interfaz de destino al mismo tiempo.
Ventajas de los adaptadores de objetos:
1. Adapte múltiples adaptadores diferentes al mismo objetivo, es decir, el mismo adaptador puede adaptar tanto la clase de adaptador como su subclase a la interfaz de destino.
Desventajas de los adaptadores de objetos:
1. En comparación con el modo adaptador de clase, no es fácil reemplazar la clase de adaptador.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!