Pattern di progettazione dell'osservatore con oggetti complicati

2

Sto cercando di ottenere una buona conoscenza del modello di progettazione di Observer, ma sono bloccato a chiedermi di un problema specifico. Negli esempi che sono stato in grado di trovare di implementazione, sono tutti piuttosto essenziali in termini di uno stato progettato in modo specifico.

Ad esempio, la classe "soggetto" che viene osservata ha solo un singolo stato o variabile che viene segnalata a qualsiasi altra classe che la osserva. La mia domanda è, cosa succede quando hai una classe che rappresenta una struttura dati grande o complessa?

Diciamo che ho più variabili su una singola classe e la implemento come osservabile. Quindi impostare qualcosa per guardarlo per le modifiche in una variabile specifica. La classe di osservazione deve essere notificata ogni volta che qualcosa non è correlato a ciò a cui è interessato? In tal caso, devo scrivere un metodo di aggiornamento per ciascun tipo di variabile che potrebbe essere potenzialmente osservato? O dovrei scrivere un osservatore per ogni singola variabile della classe che potrebbe essere osservata?

Qualsiasi chiarimento su questo argomento è apprezzato.

    
posta Sh4d0wsPlyr 29.04.2016 - 21:22
fonte

1 risposta

2

Potresti avere un'unica interfaccia osservabile che consente di iscriversi per nome della proprietà o anche usando espressioni regolari. Utilizzare una mappa invece di una lista per tenere gli osservatori dovrebbe funzionare. Si parla di osservare 'variabili' che potrebbero non significare molto ma bisogna stare attenti a evitare di pensare in termini di dettagli concreti di implementazione quando si progettano interazioni tra classi. Devi davvero creare la tua interfaccia in termini di osservazione delle proprietà astratte.

Una nota di cautela : il pattern dell'osservatore è associato a problemi di perdita di memoria perché l'oggetto osservato manterrà un riferimento all'osservatore finché non lo si rimuove. Prendi in considerazione l'uso di riferimenti deboli per i tuoi osservatori per evitare di doversi preoccupare di rimuovere gli osservatori per poterli rilasciare alla garbage collection.

    
risposta data 29.04.2016 - 21:41
fonte

Leggi altre domande sui tag