BEHAVIORAL

Observer

Definire una dipendenza uno-a-molti tra oggetti in modo che quando un oggetto cambia stato, tutti i suoi dipendenti vengono notificati e aggiornati automaticamente.

Il Problema

Quando un oggetto deve notificare altri oggetti senza conoscere chi sono o quanti sono, creando un accoppiamento stretto.

La Soluzione

Definire un meccanismo di sottoscrizione che permette a più oggetti di osservare un soggetto. Quando il soggetto cambia stato, notifica automaticamente tutti gli osservatori.

Struttura

Subject mantiene lista di Observer e fornisce metodi attach/detach. Observer definisce interfaccia update(). ConcreteObserver implementa update().

Partecipanti:
Subject - conosce i suoi observer e fornisce interfaccia per attach/detach
Observer - interfaccia per ricevere notifiche
ConcreteSubject - memorizza stato e notifica observer quando cambia
ConcreteObserver - implementa update() e mantiene riferimento a ConcreteSubject
Esempi di Codice

Observer per Sistema di Notifiche

Newsletter che notifica automaticamente tutti gli iscritti quando esce un nuovo articolo.

JAVASCRIPT
Loading...

Observer per Stock Market

Sistema di trading che notifica investitori quando il prezzo di uno stock cambia.

JAVASCRIPT
Loading...
Esempi nel Mondo Reale
Event listeners in JavaScript (addEventListener)
React state management (useState, Redux subscribers)
RxJS Observables
Pub/Sub messaging systems (Redis, RabbitMQ)
Model-View architecture (MVC, MVVM)
Quando Usarlo
Quando un cambiamento di stato in un oggetto richiede cambiamenti in altri
Quando non sai quanti oggetti devono essere notificati
Quando vuoi disaccoppiare soggetto e osservatori
Quando serve broadcast di eventi a molteplici listener
Quando NON Usarlo
Quando hai solo un osservatore (usa callback diretto)
Quando l'ordine di notifica è critico
Quando troppe notifiche causano problemi di performance
Pattern Correlati