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

  1. XMLParser: Define la interfaz objetivo que el cliente espera usar.

  2. JSONData: Es la clase existente que proporciona datos en formato JSON.

  3. Adapter: Es la clase adaptadora que implementa la interfaz XMLParser y utiliza la clase JSONData para realizar la conversi贸n de datos de JSON a XML.

  4. Cliente: Utiliza la clase JSONData para mostrar los datos en formato JSON y la clase Adapter 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