STRUCTURAL

Adapter

Convertire l'interfaccia di una classe in un'altra interfaccia che i client si aspettano. Adapter permette a classi di lavorare insieme che altrimenti non potrebbero a causa di interfacce incompatibili.

Il Problema

Hai bisogno di usare una classe esistente, ma la sua interfaccia non è compatibile con il resto del tuo codice.

La Soluzione

Creare una classe adapter che funge da wrapper, traducendo le chiamate dal client all'interfaccia della classe esistente.

Struttura

Client chiama metodi su Adapter, che delega le chiamate a Adaptee con interfaccia incompatibile.

Partecipanti:
Target - interfaccia che il client si aspetta
Adapter - adatta Adaptee all'interfaccia Target
Adaptee - classe esistente con interfaccia incompatibile
Client - collabora con oggetti che rispettano l'interfaccia Target
Esempi di Codice

Adapter per API di Pagamento

Adattamento di diverse API di pagamento (Stripe, PayPal) a un'interfaccia comune.

JAVASCRIPT
Loading...

Adapter per Legacy Database

Adattamento di vecchio sistema di storage XML a nuova interfaccia JSON.

JAVASCRIPT
Loading...
Esempi nel Mondo Reale
Integrazione API di terze parti (Stripe, PayPal, AWS SDK)
Legacy code integration (adattamento vecchio codice a nuove interfacce)
Database adapters (MySQL, PostgreSQL, MongoDB)
Logger adapters (Winston, Log4j, console)
Media player adapters (formati audio/video diversi)
Quando Usarlo
Quando vuoi usare una classe esistente ma la sua interfaccia non corrisponde
Quando vuoi creare una classe riutilizzabile che coopera con classi incompatibili
Quando hai bisogno di usare più sottoclassi ma è impraticabile adattarle tutte
Quando vuoi integrare librerie di terze parti con interfacce diverse
Quando NON Usarlo
Quando puoi modificare direttamente la classe originale
Quando l'adattamento è troppo complesso e introduce troppa logica
Quando ci sono troppe conversioni di dati costose