sono stato interrogato da un collega circa il modello di progettazione della mia realizzazione di un servizio di Windows WCF in un'applicazione client ASP.net e davvero non riuscivo a capire se si tratta di Ponte o adattatore !Ponte vs. adattatore Design Pattern
Ecco l'attuazione:
- ho ottenuto il contratto di servizio
- Definito una nuova interfaccia simile al mio contratto WCF Data
- ho creato un client WCF e avvolto all'interno della nuova interfaccia
- Mappate le nuove operazioni dell'interfaccia al client WCF originale (eseguo qui la registrazione/gestione degli errori)
L'ho sempre pensato come un'implementazione del modello Adattatore, ma in realtà non riesco a capire perché non lo è Bridge!
Ho letto tutti i post qui in SO, GoF e wikipedia ma in realtà non ha senso!
Dalla mia comprensione, Entrambi i modelli punto in un tipo esistente, sia scindere un'astrazione dalla sua attuazione mi manca un punto?
Ecco da GoF:
La differenza fondamentale tra questi modelli sta nella loro intenti. L'adattatore si concentra sulla risoluzione delle incompatibilità tra due interfacce esistenti . Non si concentra sul modo in cui queste interfacce sono implementate, né considera come potrebbero evolversi indipendentemente. È un modo di creare due classi progettate in modo indipendente che funzionano insieme senza lo che reimplementa l'una o l'altra. Bridge, d'altra parte, collega un'astrazione e le sue (potenzialmente numerose) implementazioni. Lo standard fornisce un'interfaccia stabile ai client anche se consente di variare le classi che lo implementano. Inoltre, supporta le nuove implementazioni come il sistema si evolve.
Non capisco pienamente la dichiarazione di cui sopra,
- Vuol dire che se ho variare l'adaptee o modificare l'implementazione del l'interfaccia originale in fase di progettazione, allora è Ponte modello ?
- Le differenze suona banale, ci sono altre differenze nell'implementazione/abstcation ?
- Come si può sapere quale implementazione viene utilizzata dopo lo sviluppo ?
- Qualcuno può darmi un buon esempio di schema del bridge e come è possibile modificare durante il ciclo di vita del software?
Aggiornamento:
Sempre da GoF:
Ricordate che un adattatore fa due interfacce esistenti lavorano insieme in contrasto con la definizione di uno completamente nuovo.
Vuol dire che cambiando l'interfaccia esistente in modo che possa lavorare con un'altra interfaccia è un'implementazione di Adapter?
Update2:
Appena trovato questo incredibile articolo: Illustrated GOF Design Patterns in C#
Questa è vera struttura Ponte di picchiettio:
mi mancava il fatto che il modello di ponte consente di combinare le diverse astrazioni e le implementazioni e estendere in modo indipendente in modo indipendente
Sì, hai ragione dalla parte decoratore, comunque, per definizione, sembra che questo è il modello Bridge, dal momento che il contratto di servizio WCF è in continua evoluzione nel corso del ciclo di vita del software! –
ponte utilizzato per il collegamento di due gerarchie di classi. non vedo alcuna gerarchia qui. –