Il modello di osservatore può essere rappresentato da automobili e semafori?

2

Volevo verificare con tutti voi, se ho un'analogia corretta del modello di osservatore. Lo scenario è il seguente: Considerare, ad un incrocio, un segnale stradale, con luci rosse, gialle e verdi rispettivamente. Ci sono veicoli di fronte al posto del segnale stradale. Quando mostra il rosso, i veicoli si fermano, quando mostra il verde, i veicoli si muovono. Nel caso in cui sia giallo, il guidatore deve decidere se andare o fermarsi, a seconda che lui / lei abbia attraversato la linea di stop o meno. Allo stesso tempo, ci sono veicoli che non si preoccupano del segnale. Farebbero come vogliono.

Le somiglianze sono che, il Segnale stradale sembra essere il soggetto, che notifica i suoi stati facendo brillare le luci appropriate. Chi lo guarda e segue il segnale sono quelli che lo sottoscrivono e si comportano secondo lo stato del soggetto. Quelli a cui non importa, sono in ordine di non sottoscrizione dal semaforo.

Per favore dimmi, se pensi che sia un'analogia corretta o no?

    
posta eeerahul 28.05.2012 - 07:12
fonte

5 risposte

3

L'analogia funzionerà, ma hai aggiunto più complicazioni come cosa fare al semaforo.

Un modo più semplice è di avere solo luce verde e rossa; il semaforo indica due cambiamenti di stato:

  • da rosso a verde: il traffico può andare.
  • da verde a rosso: il traffico deve fermarsi.

Si noti che le azioni che dovrebbero avvenire come risultato di questo cambiamento di stato non riguardano il soggetto osservato (cioè il semaforo non ferma l'auto).

Senza l'abbonamento, le parti interessate dovrebbero eseguire il polling continuo dello stato del semaforo. Pertanto, quelli "che non sono interessati" possono essere esclusi dall'analogia in quanto non sono importanti.

    
risposta data 28.05.2012 - 07:30
fonte
5

Il problema principale con il pattern di osservatore e un esempio di semaforo, a mio avviso, è che il pattern di osservatore serve per notificare ai sottoscrittori le modifiche di stato . Teoricamente, un osservatore (un'auto nel traffico) riguarda lo stato attuale del semaforo, non tanto su quando cambia.

    
risposta data 28.05.2012 - 07:42
fonte
1

Non penso che sia un'analogia giusta. Gli osservatori si registrano inizialmente con il soggetto. Nell'esempio del traffico, ciò risulterebbe un po 'complesso perché le auto avrebbero bisogno di registrarsi / annullare la registrazione a tutti i semafori in base al fatto che il segnale sia verde o meno. Per me, un'analogia appropriata sarebbe costituita da più thread che fanno il loro lavoro e controllano periodicamente il loro stato di interruzione.

    
risposta data 29.05.2012 - 07:34
fonte
0

Penso che l'analogia non sia la migliore. Quando guidi un'auto non ti importa davvero di OGNI modifica dello stato del semaforo, ti interessa solo lo stato ATTUALE del prossimo semaforo che incontrerai. Uno migliore, secondo me, sarebbe la tv e la borsa economica. La borsa sarebbe il tuo soggetto e i tuoi canali televisivi i tuoi osservatori. Hanno davvero bisogno di essere notati in ogni cambio di stato del soggetto, in tempo reale.

    
risposta data 30.05.2012 - 06:42
fonte
0

Penso che la tua analogia sia sbagliata, a seconda di quanto tecnicamente corretto vuoi che sia l'analogia.

Sebbene l'auto "osservi" il semaforo, lo schema dell'osservatore riguarda il soggetto notifica attivamente ai suoi osservatori un cambiamento di stato.

Se si applica l'analogia con il semaforo, allora il semaforo dovrebbe inviare un messaggio diretto verso ogni auto che si avvicina al semaforo quando cambia. Questo è un po 'fuori da IMHO.

    
risposta data 30.05.2012 - 15:41
fonte

Leggi altre domande sui tag