UGIdotNET Home UGIdotNET Home
UGIdotNET Blogs UGIdotNET Blogs
UGIdotNET Forum UGIdotNET Forum
MSDN Architetti MSDN Architetti
Visualizza Modifiche Visualizza Modifiche
Modifica Modifica
Stampa Stampa
Modifiche Recenti Modifiche Recenti
Sottoscrizioni Sottoscrizioni
Ufficio Oggetti Smarriti Ufficio Oggetti Smarriti
Cerca Riferimenti Cerca Riferimenti
Rinomina Rinomina
Cerca

Versioni

20/12/2006 15.35.02
-83.103.36.228
20/12/2006 15.34.36
-83.103.36.228
20/12/2006 15.32.00
-83.103.36.228
20/12/2006 15.31.52
-83.103.36.228
20/12/2006 15.30.31
-83.103.36.228
Elenco completo versioni Elenco completo versioni
Pattern Mediator
.
Summary un design pattern che definisce la logica con cui un insieme di oggetti interagiscono e realizza l'interazione mantenendo gli oggetti disaccoppiati.

Conosciuto anche come

Non ha altri nomi.

Intento

Il design pattern Mediator è utile quando si desidera implementare una funzionalità componendo il comportamento di diversi oggetti.

La relazione tra gli oggetti che implementano i comportamenti che si desidera comporre (i colleague) e l'oggetto che compone questi comportamenti (il mediator) viene stabilita in modo dinamico ossia a run-time. Per questo, questo design pattern è classificato rispetto allo scopo (vedi ClassificazioneDeiDesignPattern#ClassiOggetti) come rivolto agli oggetti. Rispetto al fine questo design pattern è classificato tra i ClassificazioneDeiDesignPattern#Comportamentali .

Diagramma UML

Un'altro diagramma equivalente qui

Motivazione

Una consegenza di quando si desidera implementare una funzionalità componendo i comportamenti di diversi oggetti o equivalentemente si desidera scomporre un comportamento implementato da un oggetto in diversi oggetti è quella di avere la necessità che i diversi oggetti comunichino tra loro. Se la comunicazione viene implementata creando una RelazioneDiDipendenza ci sarà un alto accoppiamento tra gli oggetti questo frena tanto il riutilizzo che l'evoluzione degli oggetti e della loro logica di interazione. Il design pattern Mediator assolve alla necessità di mettere in comunicazione i diversi oggetti e definire la logica di interazione mantenendo i diversi oggetti disaccoppiati.

Esempi d'uso in .NET

Un esempio d'uso si ha nei form Windows e nelle pagine ASP.NET: il WinForm o WebForm è il mediator mentre i controlli fanno la parte dei colleague. Il form una RelazioneDiContenimento verso i controlli e tramite questa li referenzia, in questo caso i controlli comunicano con il form applicando il PatternObserver invece che attraverso la classe astratta Mediator.

Note sulla implementazione in .NET

Come nei form windows e web l'uso di eventi può essere comodo in alternatica all'uso di una interfaccia o classe base astratta per mettere in comunicazione i colleague con il mediator.

Del codice .NET di esempio è disponibile qui .

Relazione con altri design pattern

Il mediator può essere implementato come un observer descritto nel PatternObserver. Vedi la mappa della RelazioneTraDesignPattern.

Approfondimenti

Il design pattern Mediator centralizza la logica con cui i colleague comunicano e questo ne semplifica la gestione.

La comunicazione può essere bidirezionale ossia dal mediator veso i colleague e viceversa.

Domande di approfondimento

  • Quando la logica di gestione della comunicazione diventa molto complessa e di conseguenza il codice diventa difficile da leggere, capire, e modificare cosa si può fare per risolvere questo problema?
  • Quali differenze ci sono tra questo design pattern e il PatternFacade?
  • Cosa hanno in comune i design pattern PatternChainOfResponsibility, PatternCommand e PatternObserver col design pattern Mediator?

Link

http://c2.com/cgi/wiki?MediatorPattern

VediAnche CatalogoDeiDesignPattern , DesignPattern#PatternComuni

UGIdotNETWiki

UGIdotNETWiki è 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

  • PatternMediator
© 2008 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali