¿Qué es la clase de adaptador en Java? Ventajas de la clase de adaptador y sus tipos

Publicado: 2021-05-19

Tabla de contenido

¿Qué es una clase adaptadora?

En JAVA, una clase de adaptador permite la implementación predeterminada de interfaces de escucha. La noción de interfaces de escucha proviene del modelo de evento de delegación. Es una de las muchas técnicas utilizadas para manejar eventos en lenguajes de programación de interfaz gráfica de usuario (GUI), como JAVA.

La programación de GUI está predominantemente impulsada por eventos, con el usuario interactuando con el sistema a través de imágenes y gráficos asociados. Esto significa que cada actividad iniciada por el usuario, como el movimiento del mouse que cambia las coordenadas del puntero del mouse en la pantalla, hace clic en un botón o se desplaza por una página, se considera un evento independiente.

Cada una de estas actividades de eventos independientes está intrínsecamente vinculada a un segmento de código que itera qué respuesta debe proporcionar la aplicación al usuario. El camino es sencillo. El usuario (fuente) genera un evento y lo envía a una o más interfaces de escucha. Una vez que se recibe un evento potencial, la interfaz de escucha procesa el evento y devuelve la respuesta adecuada.

Esta vía fundamenta el proceso de manejo de eventos. Por lo tanto, una clase de adaptador en JAVA se usa para implementar una interfaz que tiene un conjunto de métodos ficticios. Si un programador elige heredar una clase de adaptador, no se verá obligado a implementar todos los métodos enumerados en una interfaz de escucha en particular. La clase de adaptador se puede dividir en subclases para que el programador pueda anular solo los métodos necesarios. En otras palabras, mediante el uso de una clase de adaptador, el programador puede construir rápidamente su propia interfaz de escucha para eventos de campo. Esto ayuda a ahorrar código.

¿Cuál es la relación entre una clase de adaptador y una interfaz de escucha?

Los oyentes se utilizan cuando el programador tiene la intención de utilizar la mayoría de los métodos enumerados en la interfaz. Si una clase implementa directamente una interfaz de escucha, todos los métodos dentro de esa interfaz deben implementarse, lo que hace que el código sea excesivamente grande. Esta complejidad se puede resolver llamando a una clase de adaptador. Una clase de adaptador resulta esencial en los casos en que un evento solo requiere métodos específicos.

El programador solo tiene que crear una subclase y anular los métodos de interés para usar una clase adaptadora. Las clases de adaptador son, por lo tanto, beneficiosas para las interfaces de escucha en JAVA que tienen más de un método. Para comprender mejor esto, consideremos el ejemplo de la interfaz MouseListener. Esta interfaz es notificada cada vez que hay un cambio en el estado del mouse. Tiene cinco métodos, clic del mouse, mouseExited, mouseEntered, mousePressed y mouseReleased.

Cuando se notifica un evento, incluso si solo se necesita uno de estos métodos, todos deben implementarse. Los métodos que no son necesarios se mantienen vacíos. Se utiliza una clase de adaptador para evitar esta implementación innecesaria de un cuerpo de método vacío.

Comprender el patrón de diseño del adaptador

En lenguaje no técnico, un adaptador, por definición, está estructuralmente diseñado para permitir que dos interfaces incompatibles funcionen juntas. Por lo tanto, un patrón de adaptador es capaz de hacer compatibles dos interfaces incompatibles sin cambiar su código existente. Las interfaces correspondientes pueden ser inconsistentes, pero sus funcionalidades internas deben coincidir con el requisito que se busca. Para aclarar mejor esto, consideremos un ejemplo relevante.

Somos conscientes de que los diferentes países tienen diferentes tomas de corriente, voltajes y medidas de frecuencia. Si tenemos que utilizar un dispositivo diseñado según las especificaciones de un país en otro, debemos asegurarnos de que el dispositivo sea compatible.

Por ejemplo, en el Reino Unido, los enchufes tipo G se usan comúnmente, en los EE. UU. y Japón, los enchufes tipo A y tipo B, y en India, tipo C, tipo D y tipo M. Una computadora portátil o dispositivo móvil transportado desde India por lo tanto, ser incompatible con las especificaciones eléctricas de, por ejemplo, EE. UU. y Japón. Aquí es donde el propósito de un adaptador se vuelve esencial para convertir un código incompatible en un código compatible.

Tipos de clases de adaptadores

Las clases de adaptador se pueden encontrar en java. Paquetes awt.the event, java.awt.dnd y java.swing.event. Las clases de adaptador estándar con sus correspondientes interfaces de escucha en JAVA se mencionan a continuación para cada uno de estos paquetes.

1. Java. awt víspera

Clase de adaptador Interfaz de escucha
Adaptador de ventana WindowListener
adaptador de llave KeyListener
adaptador de ratón MouseListener
MouseMotionAdapter MouseMotionListener
Adaptador de enfoque FocusListener
ComponentAdapter ComponentListener
Adaptador de contenedor ContainerListener
HierarchyBoundsAdapterJerarchyBoundsAdapter JerarquíaLímitesOyente

2. java.awt.dnd

Clase de adaptador Interfaz de escucha
Adaptador de fuente de arrastre DragSourceListener
DragTargetAdapter DragTargetListener

3. javax.swing.event

Clase de adaptador Interfaz de escucha
Adaptador de entrada del ratón RatónEntradaOyente
Adaptador de marco interno InternalFrameListener

Estos están presentes en el Abstract Window Toolkit de sus respectivos paquetes de Java. Para comprender la naturaleza de los métodos contenidos en las interfaces de escucha, consideremos algunos ejemplos:

  1. La interfaz WindowListener define métodos relacionados con eventos de ventana, incluida la apertura y el cierre de una ventana, la activación y desactivación de una ventana y la iconificación y desintoxicación de una ventana.
  2. La interfaz KeyListener define métodos que manejan eventos clave que activa el usuario al interactuar con los componentes del teclado.
  3. La interfaz MouseListener recibe una notificación cuando un mouse está estable y recibe un evento potencial relacionado con salir, ingresar, hacer clic, presionar o soltar un componente en el marco visual del usuario.
  4. La interfaz Component Listener recibe potenciales de eventos de componentes. Aquí, un componente se refiere a cualquier objeto gráfico diseñado para interactuar con el usuario, como botones, casillas de verificación y barras de desplazamiento.

Diferencia entre adaptador de clase y adaptador de objeto

Para garantizar la funcionalidad y la flexibilidad, la programación orientada a objetos como JAVA ofrece a los programadores funciones como la herencia y la composición. Si intenta reutilizar un código en particular heredando sus características de otra clase, la subclase que cree seguirá dependiendo de la clase principal a lo largo de todo el programa.

Esto hace que el sistema, en muchos casos, sea cada vez más complejo y menos comprobable y hace que el intercambio de funcionalidades en tiempo de ejecución sea laboriosamente difícil. En composición, una clase solo usa otra. El desacoplamiento entre los dos se promueve aún más al definir claramente las interfaces.

Por lo tanto, el debate entre el adaptador de clase y el adaptador de objeto se puede resolver de la siguiente manera. Class Adapter utiliza la herencia y, por lo tanto, solo puede envolver una clase. No puede envolver una interfaz porque, por definición, debe derivar de alguna clase base. Un adaptador de objetos usa composición y, por lo tanto, es capaz de envolver clases e interfaces. Esto se logra principalmente porque, en la composición, cada clase o interfaz es un miembro encapsulado privado.

Ventajas de una clase de adaptador

  1. Una clase de adaptador ayuda a las clases no relacionadas a trabajar juntas.
  2. Con el uso de una clase de adaptador, la misma clase se puede usar de varias maneras.
  3. Los usuarios cuentan con la opción de un kit enchufable para desarrollar aplicaciones. El uso de la clase, por lo tanto, se vuelve altamente reutilizable.
  4. Mejora la transparencia de las clases.
  5. Proporciona una forma de incluir patrones relacionados en una clase.

Aprenda cursos de ingeniería de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Conclusión

Con este artículo, hemos entendido la mecánica de una clase adaptadora en JAVA, los tres paquetes principales que contienen clases adaptadoras y los beneficios de las clases adaptadoras para los programadores. Las clases de adaptador son clases abstractas para recibir varios eventos y existen como una conveniencia para crear objetos de escucha. Con sus diferentes funcionalidades, las clases adaptadoras ofrecen a los programadores la plataforma para ser innovadores a través de la metodología Swing.

Si desea mejorar sus habilidades de Java, debe tener en sus manos estos proyectos de Java. Si está interesado en obtener más información sobre Java, desarrollo de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, 9+ proyectos y asignaciones, estado de exalumno de IIIT-B, proyectos finales prácticos prácticos y asistencia laboral con las mejores empresas.

¿Qué es la clase de adaptador en Java?

La clase de adaptador es una clase que se define utilizando el patrón de adaptador. Se puede usar un adaptador para agregar nuevas capacidades a una clase existente sin modificar la clase original. Por ejemplo, la clase java.util.Scanner es del paquete java.util. La clase Scanner no puede leer de un archivo ya que un archivo no es un InputStream. Para leer de un archivo, creamos una clase de adaptador que acepta un InputStream como argumento y devuelve los datos procesados ​​como un objeto. El patrón de adaptador se usa para extender la funcionalidad de una clase existente sin modificar su código de ninguna manera.

¿Qué son los patrones de diseño en Java?

Un patrón de diseño es una solución general reutilizable para un problema común dentro de un contexto dado en el diseño de software. No es un diseño terminado que pueda transformarse directamente en código. Es una descripción o plantilla sobre cómo resolver un problema que se puede usar en muchas situaciones diferentes. En la programación orientada a objetos, los patrones de diseño son convenciones establecidas que facilitan el diseño y la implementación de sistemas de software. Hay varios patrones de diseño en Java. No es necesario que un patrón de diseño tenga que ser tomado de otro idioma. Los patrones de diseño se pueden escribir de forma muy simple y breve.

¿Cuál es el patrón de diseño más utilizado en Java?

Encontrará muchos patrones de diseño en java. El patrón de diseño más utilizado es Factory Pattern. Tiene muchas aplicaciones en el desarrollo empresarial. Ayuda a eliminar la dependencia de clases concretas en la aplicación. Permítanos darle un ejemplo de la vida real. En una aplicación de comercio electrónico, es posible que tenga el requisito de crear un objeto de un usuario tanto en el entorno de prueba como en el de producción. La clase de usuario puede tener muchas subclases como Administrador, Comerciante, Vendedor, Usuario, etc. El método principal común en el patrón de fábrica es similar a: public class UserFactory { public static Object create () { User user = createAdmin (); // ver si el administrador puede devolver el usuario; // devuelve el usuario actual } }. Vea aquí cómo la clase de usuario no depende de una clase concreta. Aunque no es un ejemplo completo, te muestra cómo funciona el patrón Factory.