Convertire l'interfaccia di una classe in un'altra interfaccia che i client si aspettano, consentendo a classi con interfacce incompatibili di funzionare insieme.
Per riutilizzare una classe esistente la cui interfaccia non corrisponde a quella richiesta dal dominio.
Esempio: Integrare una classe esterna, come TextView, in un sistema che utilizza l'interfaccia Shape tramite una classe adattatrice (TextShape).
Quando una classe esistente non ha l'interfaccia desiderata.
Per creare una classe riutilizzabile che lavori con classi incompatibili.
Quando è necessario adattare diverse sottoclassi senza estenderle singolarmente.
Target (Shape): Interfaccia richiesta dal dominio.
Client (DrawingEditor): Utilizza oggetti conformi a Target.
Adaptee (TextView): Interfaccia esistente che necessita di adattamento.
Adapter (TextShape): Traduce l'interfaccia di Adaptee in quella di Target.
Il client richiama operazioni su un'istanza di Adapter.
Adapter traduce la richiesta e chiama le operazioni di Adaptee.
Adaptee esegue l'azione richiesta.
Si lega a una specifica classe concreta di Adaptee.
Non adatto per adattare tutte le sottoclassi di Adaptee.
Permette di modificare parte del comportamento di Adaptee.
Introdurre un solo oggetto evita puntatori aggiuntivi.
Può lavorare con tutte le sottoclassi di Adaptee.
Aggiunge nuove funzionalità tramite composizione.
Sovrascrivere il comportamento di Adaptee è più complesso.
Permette l'uso di adattatori plug-in e bidirezionali per maggiore flessibilità e trasparenza.
Adapter eredita pubblicamente da Target e privatamente da Adaptee. Questo rende Adapter un sottotipo di Target, ma non di Adaptee.
Operazioni astratte: Per standardizzare il comportamento richiesto.
Oggetti delegati: Lavoro delegato a un altro oggetto con funzionalità già implementate.
Adattatori parametrizzati: Configurazione dinamica del comportamento.
In molti software
Bridge: Separazione tra astrazione e implementazione.
Decorator: Aggiunta dinamica di responsabilità a un oggetto.
Proxy: Controllo di accesso a un oggetto.