Versioni
| Conosciuto anche comeHandle/Body, Driver. IntentoIl design pattern Bridge disaccoppia un'astrazione (RealAbstraction) dalla sua implementazione (ConcreteImplementatorA) cosicchè entrambe possano variare ed evolvere in modo indipendente ed autonomo e che sia possibile sostituire l'implementazione (con ConcreteImplementatorB) senza conseguenze per l'utilizzatore (Client). La classe ConcreteImplementatorA che determina l'implementazione stabilita a design-time attraverso l'ereditarietà quindi questo design pattern è classificato rispetto allo scopo (vedi ClassificazioneDeiDesignPattern#ClassiOggetti) come rivolto alle classi. Rispetto al fine questo questo design ClassificazioneDeiDesignPattern#Strutturali. Diagramma UML
Un'altro diagramma equivalente qui . MotivazioneIl design pattern Bridge è utile quando:
Esempi d'uso in .NETL'implementazione MONO di .NET impiega questo design pattern nel namespace System.Windows.Forms ad esempio per la classe Form la cui implementazione dipende dal Toolkit grafico disponibile in un dato sistema operativo (Win32 per Windows, X11 per Unix e Linux, nativo per Mac OS X, etc.). Per ottimizzare il tipo oggetto String ogni istanza di string referenzia l'implementazione di una stringa reale che in caso di copia della variabile String viene condivisa.
Note sulla implementazione in .NETIn .NET e C# non è disponibile l'EreditarietàPrivata, per ottenere il medesimo effetto è possibile applicare questo design pattern. Del codice .NET di esempio è disponibile qui . Relazione con altri design patternVedi la mappa della RelazioneTraDesignPattern. ApprofondimentiQuesto design pattern viene in aiuto anche quando è necessario modificare o evolvere l'implementazione (ConcreteImplementatorA) di una astrazione (Abstraction) senza dover ricompilare le classi (Client) che lo utilizzano. Lo stesso risultato in .NET si ottiene mettendo l'implementazione (ConcreteImplementatorA) in un altro Assembly e referenziandolo, il meccanismo di load dinamico delle dll e del versioning permetterà di caricare la nuova versione dell'implementazione senza ricompilare l'assembly dell'utilizzatore. Questa possibilità è alla base del ParadigmaDiProgrammazioneAComponenti, una caratteristica innovativa diffusa nelle applicazioni commerciali da Microsoft e solo successivamente adottata anche dai sistemi Unix e Linux. Quando l'implementazione è una e una sola a solo uso della data astrazione, applicare questo design pattern non da alcun beneficio. Domande di approfondimento
Link | 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 | ||||||||||||||||||||||||||||||||||||||