Versioni
| Conosciuto anche comeWrapper. IntentoIl design pattern Adatper converte l'interfaccia di una classe o di un oggetto (Adaptee) nell'interfaccia (Target) che l'utilizzatore (Client) si aspetta. Il design pattern Adatper permette all'utilizzatore (Client) e alla classe o oggetto (Adaptee) che altrimenti non potrebbero collaborare di lavorare insieme. La classe Adatper qualora referenzi la classe Adaptee con una RelazioneDiContenimento, fa si che questo design pattern sia classificato rispetto allo scopo (vedi ClassificazioneDeiDesignPattern#ClassiOggetti) come rivolto agli oggetti. Qualora la classe Adatper referenzi la classe Adaptee con una RelazioneDiEreditarietà questo design pattern viene classificato rispetto allo scopo come rivolto alle classi. Rispetto al fine questo questo design pattern è classificato tra i ClassificazioneDeiDesignPattern#Strutturali. Diagramma UMLAdapter per un oggetto:
Adapter per una classe:
MotivazioneQuando si desidera riutilizzare una classe od un oggetto dato (di terze parti, già rilasciato e compilato, etc.) non modificabile da parte di un utilizzatore che si attende una diversa interfaccia, il desin pattern Adapter permette il riutilizzo fornendo l'interfaccia attesa e richiamando le funzioni della classe o oggetto dato. Esempi d'uso in .NETIl metodo statico Adapter(IList) del tipo ArrayList riceve in ingresso una collezione di elementi (IList) quale oggetto Adaptee e restituisce una istanza di ArrayList quale Adapter. Per chi fa uso della interop di .NET per accedere a componenti COM e DLL legacy, l'esempio più tangibile e frequeste di applicazione del design pattern Adapter in .NET è la classe Runtime Callable Wrapper (RCW) che usando tlbimp.exe genera un Adapter che permette di accedere a oggetti e funzioni unmanaged da client managed. Note sulla implementazione in .NETIn .NET non è disponibile ne la RelazioneDiEreditarietàPrivata e l'EreditarietàMultipla che sono entrambe necessarie per avere un Adapter di classe quindi in .NET è possibile implementare solo un Adapter di oggetto ossia realizzato attraverso una RelazioneDiContenimento tra l'Adapter e l'Adaptee. Del codice .NET di esempio è disponibile qui . Relazione con altri design patternVedi la mappa della RelazioneTraDesignPattern. ApprofondimentiLa classe Adapter oltre ad adattare l'interfaccia del Adaptee può mettere a disposizione nuove funzionalità implementate da zero o ottenute con il supporto dell'Adaptee. Domande di approfondimento
LinkTBD http://c2.com/cgi/wiki?DesignPatterns
| UGIdotNETWikiUGIdotNETWiki è il WikiWiki italiano dedicato a .NET Se è la prima volta che senti parlare di Wiki, leggi il BenvenutoAiVisitatori e WikiInUnMinuto, oppure il ManualePassoPassoDelWiki. Argomenti Recenti | ||||||||||||||||||||||||||||||||||||||
| © 2008 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali | ||||||||||||||||||||||||||||||||||||||||