Ecco la mia opinione sui tre:
Associazione dati
In sostanza, questo significa semplicemente "il valore della proprietà X sull'oggetto Y è semanticamente legato al valore della proprietà A sull'oggetto B. Non vengono fatte ipotesi su come Y sappia o venga alimentato le modifiche sull'oggetto B.
Osservatore o osservabile / osservatore
Un modello di progettazione in base al quale un oggetto è impregnato della capacità di notificare ad altri eventi specifici, generalmente fatto utilizzando eventi reali, che sono in qualche modo simili a slot nell'oggetto con la forma di una specifica funzione / metodo. L'osservabile è colui che fornisce le notifiche e l'osservatore riceve tali notifiche. In .net, l'osservabile può esporre un evento e l'osservatore si iscrive a quell'evento con un hook a forma di "gestore di eventi". Non vengono fatte ipotesi sul meccanismo specifico che le notifiche si verificano, né sul numero di osservatori che un osservabile può notificare.
Pub / Sub
Un altro nome (forse con più semantica "broadcast") del modello Osservabile / Osservatore, che di solito implica un sapore più "dinamico": gli osservatori possono iscriversi o annullare l'iscrizione alle notifiche e un osservabile può "gridare" a più osservatori. In .NET, è possibile utilizzare gli eventi standard per questo, poiché gli eventi sono una forma di MulticastDelegate e quindi possono supportare la consegna di eventi a più abbonati e supportare anche la disiscrizione. Pub / Sottotitoli ha un significato leggermente diverso in alcuni contesti, di solito comportando più "anonimato" tra evento ed eventer, che può essere facilitato da un numero qualsiasi di astrazioni, di solito coinvolge un "intermediario" (come una coda di messaggi) che conosce tutto parti, ma le singole parti non si conoscono.
Rilegatura dati, Redux
In molti modelli "simili a MVC", l'osservabile espone una sorta di "notifica di modifica della proprietà" che contiene anche informazioni sulla specifica proprietà modificata. L'osservatore è implicito, solitamente creato dal framework, e sottoscrive queste notifiche tramite una sintassi vincolante per identificare in modo specifico un oggetto e una proprietà, e il "gestore di eventi" copia semplicemente il nuovo valore, attivando potenzialmente qualsiasi aggiornamento o logica di aggiornamento.
Rilegatura dati su Redux
Un'implementazione alternativa per l'associazione dei dati? Ok, eccone uno stupido:
- viene avviato un thread in background che controlla costantemente la proprietà associata su un oggetto.
- se quel thread rileva che il valore della proprietà è cambiato dall'ultimo controllo, copia il valore sull'elemento associato.