Patrón Adapter — Ejemplo Práctico

PUBLICADO: 2026-08-16
AUTOR: MANUEL PRIETO
Patrones de Diseño

El patrón Adapter traduce la interfaz de un servicio incompatible a la interfaz que espera el resto de la aplicación.

1. El Problema de Partida

El asistente del proyecto necesita poder responder con distintos proveedores (Anthropic, OpenAI) según coste o disponibilidad. Cada SDK expone un formato de mensajes y de streaming diferente: client.messages.create() de Anthropic no es intercambiable con client.chat.completions.create() de OpenAI. El código de la app tendría que ramificar con if (provider === 'openai') en cada punto donde se envía un mensaje.

2. La Solución Adapter

Se define una interfaz interna única ChatProvider.send(messages) y un adaptador por proveedor que traduce hacia el SDK real, devolviendo siempre la misma forma de respuesta.

3. Uso en el cliente

4. Ventajas

  • Cambio de proveedor sin tocar la UI: basta con inyectar otro adaptador.
  • Respuesta uniforme: el resto del código siempre lee { text, provider }.
  • Aislamiento de dependencias: actualizar el SDK de un proveedor solo afecta a su adaptador.