2014-10-19 16 views
7

Ho studiato entrambi ma non sono riuscito a trovare alcuna differenza reale, mi manca qualcosa? Sul web alcune persone dicono che l'Observer dovrebbe gestire solo un evento mentre il Reactor molti - ma non considero questa una vera differenza perché un Reactor potrebbe essere visto proprio come molti Observer. C'è qualche differenza o il nuovo nome Reactor è semplicemente più interessante di Observer?Modello osservatore vs Modello reattore

Grazie, Carlo

+2

Sono d'accordo in molti modi reattivo è un altro nome per il modello di osservatore – kenny

risposta

7

Il Reactor Pattern utilizza un gestore di servizio di intermediazione che demultiplexes le richieste e le spedizioni al gestore corretto.

Il Observer Pattern richiede che "Osservatori" registri con il soggetto, che quindi invia notifiche a tutti gli osservatori registrati quando si verifica un evento.

La differenza importante è che il Pattern del reattore gestisce l'invio con un gestore di richiesta centrale, mentre il Pattern di Osservatore consente ai consumatori di parlare direttamente con i produttori.

In pratica, il modello di osservatore può fornire maggiore flessibilità nella registrazione e nella cancellazione dinamiche dei consumatori. In applicazioni di concorrenza molto elevate offre anche il vantaggio di non disporre di un singolo dispatcher intermedio che riduce il throughput in termini di velocità. È inoltre rilevante il Lapsed Listener Problem, che si verifica quando i consumatori dimenticano di annullare la registrazione all'oggetto quando non desiderano più ricevere una notifica. Nei linguaggi raccolti con garbage collection, questo spesso impedisce al GC di essere in grado di raccogliere questi gestori di eventi e quindi di trovarli e tutti i riferimenti che contengono. Questo in genere non è possibile con il Pattern del reattore, che di solito non utilizza la registrazione dinamica (anche se teoricamente).

+1

Reactor risolve un problema che è piuttosto specifico per ** server **: "l'applicazione server deve demultiplex e inviare ogni richiesta in ingresso al proprio fornitore di servizi corrispondente." L'osservatore è un modello più generale per disaccoppiare i soggetti dai loro osservatori. – Fuhrmanator