fbpx
Wikipedia

Adaptador (patrón de diseño)

El patrón adaptador se utiliza para transformar una interfaz en otra, de tal modo que una clase que no pueda utilizar la primera haga uso de ella a través de la segunda.

Propósito

Convierte la interfaz de una clase en otra interfaz que el cliente espera. El adaptador permite a las clases trabajar juntas, lo que de otra manera no podría hacerse debido a sus interfaces incompatibles.

También conocido como

Aplicabilidad

Es recomendable utilizar el patrón adaptador cuando:

  • se desea usar una clase existente, y su interfaz no sea igual a la necesitada.
  • cuando se desea crear una clase reutilizable que coopere con clases no relacionadas. Es decir, que las clases no tienen necesariamente interfaces compatibles.

Estructura

 

Participantes

  • Target define la interfaz específica del dominio que Client usa.
  • Client colabora con la conformación de objetos para la interfaz Target.
  • Adaptee define una interfaz existente que necesita adaptarse.
  • Adapter adapta la interfaz de Adaptee a la interfaz Target.

Colaboraciones

  • Client llama a las operaciones sobre una instancia Adapter. De hecho, el adaptador llama a las operaciones de Adaptee que llevan a cabo el pedido.

Consecuencias

Los adaptadores de clase y objetos tienen varios pros y contras.

  • Un adaptador de clase:
    • adapta Adaptee a Target encargando a una clase Adaptee concreta. Como consecuencia, una clase adaptadora no funcionará cuando se desea adaptar una clase y todas sus subclases.
    • permite a los Adapter sobreescribir algo de comportamiento de Adaptee, ya que Adapter es una subclase de Adaptee.
  • Un adaptador de objeto:
    • permite que un único Adapter trabaje con muchos Adaptees, es decir, el Adapter por sí mismo y las subclases (si es que la tiene). El Adapter también puede agregar funcionalidad a todos los Adaptees de una sola vez.
    • hace difícil sobrescribir el comportamiento de Adaptee. Esto requerirá derivar Adaptee y hacer que Adapter se refiera a la subclase en lugar que al Adaptee por sí mismo.

Aquí hay otras cuestiones a considerar cuando se utiliza el patrón Adapter:

  1. ¿Cuanta adaptación hace el Adapter? Adapter varía en la cantidad de trabajo que hace para adaptar Adaptee a la interfaz Target. Hay un espectro de trabajo posible, desde una simple conversión (por ejemplo, cambiando los nombres de las operaciones) hasta soportando un conjunto de operaciones enteramente diferentes. La cantidad de trabajo que Adapter hace depende de cuanto de similar tienen la interfaz Target con Adaptee.
  2. Adaptadores enganchables. Una clase es más reutilizable cuando se deja a un lado la suposición de que otras clases deben utilizarla. Convirtiendo la adaptación de una interfaz en una clase, se elimina la suposición de que otras clases ven la misma interfaz. Dicho de otra manera, la adaptación de la interfaz permite incorporar a la clase en sistemas existentes que pueden esperar diferentes interfaces de la misma.

Implementación

Crear una nueva clase que será el Adaptador, que extienda del componente existente e implemente la interfaz obligatoria. De este modo se tiene la funcionalidad que se quería y se cumple la condición de implementar la interfaz.

La diferencia entre los patrones adaptador y fachada (facade) es que el primero reutiliza una interfaz ya existente, mientras que el segundo define una nueva con el objetivo de simplificarla.

package Structural_patterns; public class AdapterWrapperPattern { /**  * Client: Uses (and only knows) Target Interface  */ public static void main(String args[]){ Guitar eGuitar = new ElectricGuitar(); eGuitar.onGuitar(); eGuitar.offGuitar(); Guitar eAGuitar = new ElectricAcousticGuitar(); eAGuitar.onGuitar(); eAGuitar.offGuitar(); } /**  * Target: Class used by the Client   */ public interface Guitar{ public void onGuitar(); public void offGuitar(); } /**  * Direct Target Implementation: Already Adapted/Wrapped  */ public class ElectricGuitar implements Guitar{ public void onGuitar() { System.out.println("Playing Guitar"); } public void offGuitar() { System.out.println("I'm tired to play the guitar"); } } /**  * Adaptee: Class to Adapter/Wrapper   */ public class AcousticGuitar{ public void play(){ System.out.println("Playing Guitar"); } public void leaveGuitar(){ System.out.println("I'm tired to play the guitar"); } } /**  * Adapter/Wrapper: We Adapter/Wrapper AcousticGuitar into   * ElectricAcousticGuitar to adapt into the Guitar Model  */ public class ElectricAcousticGuitar implements Guitar{ AcousticGuitar acoustic = new AcousticGuitar(); public void onGuitar() { acoustic.play(); } public void offGuitar() { acoustic.leaveGuitar(); } } } 

Enlaces externos

  • Patrón adaptador: explicación y modelo UML
  •   Datos: Q23836
  •   Multimedia: Adapter pattern

adaptador, patrón, diseño, patrón, adaptador, utiliza, para, transformar, interfaz, otra, modo, clase, pueda, utilizar, primera, haga, ella, través, segunda, Índice, propósito, también, conocido, como, aplicabilidad, estructura, participantes, colaboraciones, . El patron adaptador se utiliza para transformar una interfaz en otra de tal modo que una clase que no pueda utilizar la primera haga uso de ella a traves de la segunda Indice 1 Proposito 2 Tambien conocido como 3 Aplicabilidad 4 Estructura 5 Participantes 6 Colaboraciones 7 Consecuencias 8 Implementacion 9 Enlaces externosProposito EditarConvierte la interfaz de una clase en otra interfaz que el cliente espera El adaptador permite a las clases trabajar juntas lo que de otra manera no podria hacerse debido a sus interfaces incompatibles Tambien conocido como EditarWrapper Envoltorio Aplicabilidad EditarEs recomendable utilizar el patron adaptador cuando se desea usar una clase existente y su interfaz no sea igual a la necesitada cuando se desea crear una clase reutilizable que coopere con clases no relacionadas Es decir que las clases no tienen necesariamente interfaces compatibles Estructura Editar Participantes EditarTarget define la interfaz especifica del dominio que Client usa Client colabora con la conformacion de objetos para la interfaz Target Adaptee define una interfaz existente que necesita adaptarse Adapter adapta la interfaz de Adaptee a la interfaz Target Colaboraciones EditarClient llama a las operaciones sobre una instancia Adapter De hecho el adaptador llama a las operaciones de Adaptee que llevan a cabo el pedido Consecuencias EditarLos adaptadores de clase y objetos tienen varios pros y contras Un adaptador de clase adapta Adaptee a Target encargando a una clase Adaptee concreta Como consecuencia una clase adaptadora no funcionara cuando se desea adaptar una clase y todas sus subclases permite a los Adapter sobreescribir algo de comportamiento de Adaptee ya que Adapter es una subclase de Adaptee Un adaptador de objeto permite que un unico Adapter trabaje con muchos Adaptees es decir el Adapter por si mismo y las subclases si es que la tiene El Adapter tambien puede agregar funcionalidad a todos los Adaptees de una sola vez hace dificil sobrescribir el comportamiento de Adaptee Esto requerira derivar Adaptee y hacer que Adapter se refiera a la subclase en lugar que al Adaptee por si mismo Aqui hay otras cuestiones a considerar cuando se utiliza el patron Adapter Cuanta adaptacion hace el Adapter Adapter varia en la cantidad de trabajo que hace para adaptar Adaptee a la interfaz Target Hay un espectro de trabajo posible desde una simple conversion por ejemplo cambiando los nombres de las operaciones hasta soportando un conjunto de operaciones enteramente diferentes La cantidad de trabajo que Adapter hace depende de cuanto de similar tienen la interfaz Target con Adaptee Adaptadores enganchables Una clase es mas reutilizable cuando se deja a un lado la suposicion de que otras clases deben utilizarla Convirtiendo la adaptacion de una interfaz en una clase se elimina la suposicion de que otras clases ven la misma interfaz Dicho de otra manera la adaptacion de la interfaz permite incorporar a la clase en sistemas existentes que pueden esperar diferentes interfaces de la misma Implementacion EditarCrear una nueva clase que sera el Adaptador que extienda del componente existente e implemente la interfaz obligatoria De este modo se tiene la funcionalidad que se queria y se cumple la condicion de implementar la interfaz La diferencia entre los patrones adaptador y fachada facade es que el primero reutiliza una interfaz ya existente mientras que el segundo define una nueva con el objetivo de simplificarla package Structural patterns public class AdapterWrapperPattern Client Uses and only knows Target Interface public static void main String args Guitar eGuitar new ElectricGuitar eGuitar onGuitar eGuitar offGuitar Guitar eAGuitar new ElectricAcousticGuitar eAGuitar onGuitar eAGuitar offGuitar Target Class used by the Client public interface Guitar public void onGuitar public void offGuitar Direct Target Implementation Already Adapted Wrapped public class ElectricGuitar implements Guitar public void onGuitar System out println Playing Guitar public void offGuitar System out println I m tired to play the guitar Adaptee Class to Adapter Wrapper public class AcousticGuitar public void play System out println Playing Guitar public void leaveGuitar System out println I m tired to play the guitar Adapter Wrapper We Adapter Wrapper AcousticGuitar into ElectricAcousticGuitar to adapt into the Guitar Model public class ElectricAcousticGuitar implements Guitar AcousticGuitar acoustic new AcousticGuitar public void onGuitar acoustic play public void offGuitar acoustic leaveGuitar Enlaces externos EditarPatron adaptador explicacion y modelo UML Implementacion en Java Datos Q23836 Multimedia Adapter pattern Obtenido de https es wikipedia org w index php title Adaptador patron de diseno amp oldid 125248620, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos