Loading AI tools
patrón de diseño para transformar una interfaz en otra De Wikipedia, la enciclopedia libre
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.
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.
Es recomendable utilizar el patrón adaptador cuando:
Los adaptadores de clase y objetos tienen varios pros y contras.
Aquí hay otras cuestiones a considerar cuando se utiliza el patrón Adapter:
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();
}
}
}
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.