Differenze tra le versioni di "Observer pattern"

nessun oggetto della modifica
 
Uno degli aspetti fondamentali è che tutto il funzionamento dell'observer si basa su meccanismi di [[callback]], implementabili in diversi modi, o tramite [[Funzione (informatica)|funzioni]] virtuali o tramite [[Puntatore (programmazione)|puntatori]] a funzioni passati quali [[Parametro (programmazione)|argomenti]] nel momento della registrazione dell'observer, e spesso a questa funzione vengono passati dei parametri in fase di generazione dell'evento.
 
==Attori==
In generale il pattern impiega le seguenti classi:
 
=== Soggetto ===
Una classe che fornisce [[Interfaccia (informatica)|interfacce]] per registrare o rimuovere gli observer e che [[Implementazione|implementa]] le seguenti funzioni:
* ''Attach(observer)''
N.B. La funzione ''Notify()'' viene implementata con un loop su tutti i ConcreteObserver, dove ciascuno di essi chiama la funzione ''Update()''. ''Notify()'' viene eseguita dal Soggetto Concreto per notificare un cambio del suo stato. (vedi sotto)
 
=== Soggetto Concreto ===
Questa classe contiene l'attributo
 
* si occupa di notificare gli observers chiamando la funzione ''Notify()'' definita nella classe padre (Soggetto).
 
=== Observer ===
Questa classe definisce un'interfaccia per tutti gli observers, per ricevere le notifiche dal soggetto.
È utilizzata come classe astratta per [[Implementazione|implementare]] i veri Observer, ossia i ConcreteObserver.
 
Funzioni:
* ''Update()'' - una funzione astratta che deve essere implementata dai ConcreteObserver .
 
=== ConcreteObserver ===
Questa classe mantiene un riferimento