Adapter
Adapter es un patrón de diseño estructural que permite la colaboración entre objetos con interfaces incompatibles.
Ejemplo en TypeScript
Supongamos que tienes un sistema que proporciona datos en formato JSON, pero necesitas trabajar con una biblioteca que espera datos en formato XML. Aquí es donde puedes usar un adaptador para convertir los datos de JSON a XML y viceversa.
typescriptCopy code// Interfaz objetivo (Target)
interface XMLParser {
parseXML(): void;
}
// Adaptee (Clase que proporciona JSON)
class JSONData {
public data: any;
constructor(data: any) {
this.data = data;
}
// Método que muestra datos JSON
displayJSON(): void {
console.log("JSON Data:", this.data);
}
}
// Adaptador
class Adapter implements XMLParser {
private jsonData: JSONData;
constructor(jsonData: JSONData) {
this.jsonData = jsonData;
}
// Implementación del método de la interfaz objetivo
parseXML(): void {
// Lógica para convertir JSON a XML
console.log("XML Data:", `<root>${JSON.stringify(this.jsonData.data)}</root>`);
}
}
// Cliente
const jsonData = new JSONData({ name: "John", age: 30 });
jsonData.displayJSON();
const adapter = new Adapter(jsonData);
adapter.parseXML();
Explicación
XMLParser: Define la interfaz objetivo que el cliente espera usar.
JSONData: Es la clase existente que proporciona datos en formato JSON.
Adapter: Es la clase adaptadora que implementa la interfaz
XMLParser
y utiliza la claseJSONData
para realizar la conversión de datos de JSON a XML.Cliente: Utiliza la clase
JSONData
para mostrar los datos en formato JSON y la claseAdapter
para convertir los datos a XML, permitiendo que ambas interfaces incompatibles trabajen juntas.
Este ejemplo ilustra cómo el patrón Adaptador puede ser utilizado para integrar sistemas con interfaces incompatibles, permitiendo la reutilización de código y facilitando la interoperabilidad entre diferentes componentes del sistema.
Last updated