Post

Adapter

In Design Patterns on febbraio 4, 2010 by poyblog Messo il tag:

Intento:

Convertire l’interfaccia di una classe in una nuova più conforme a ciò che il Client si aspetta.

Adapter permette a classi non omogenee di lavorare in simbiosi anche se le loro interfacce sono incompatibili.

Applicabilità:

Tale pattern è da utilizzare nel caso in cui

  • si vuole utilizzare una classe esistente e la sua interfaccia non coincide con ciò di cui abbiamo bisogno
  • si vuole creare una classe riutilizzabile che possa cooperare con classi non relazionate o impreviste, cioè classi che non possiedono necessariamente delle interfacce compatibili
  • (Adapter solo a livello di oggetto) si vuole sfruttare alcune classi esistenti, ma non è conveniente adattare le loro interfacce creando sottoclassi. Un oggetto di tipo Adapter è in grado di adattare le interfacce delle classi padre.

Partecipanti:

  • Target → definisce l’interfaccia specifica per il dominio di interesse che il Client si aspetta
  • Client → collabora con gli oggetti conformi alla interfaccia Target
  • Adaptee → definisce una interfaccia esistente che ha bisogno di essere adattata
  • Adapter → adatta l’interfaccia dell’Adaptee all’interfaccia del Target

Conseguenze:

E’ lecito in questa fase distinguere fra Adapter a livello di classe e di oggetto, dato che portano a conseguenza ben diverse.

Cominciamo dal livello di classe:

  • una classe di tipo Adapter non può lavorare nel caso in cui si volesse adattare una classe e tutte le sue sottoclassi
  • se lasciamo che Adapter sovrascriva alcuni comportamenti di Adaptee , allora Adapter è una sottoclasse di Adaptee

A livello di oggetto:

  • è possibile che un singolo Adapter lavori con molti Adaptee
  • diventa più difficile sovrascrivere il comportamento del Adapter

Altre considerazioni più generali possono essere riassunte in questi tre ultimi punti:

  • Adapter può adattarsi ad un numero variabile di Target
  • Si possono utilizzare degli adattatori cosiddetti Pluggable, in gradi di ospitare metodi per rendere adattabili diverse classi
  • Si possono utilizzare adattatori a due vie per rendere il processo di adattamento molto più trasparente

Una Risposta a “Adapter”

  1. [...] Adapter [...]

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Iscriviti

Get every new post delivered to your Inbox.