Ho un oggetto Publisher che solleva un evento a intervalli regolari (si pensi a qualcosa come un tick dell'orologio). Ho quindi 100s (o 1000s) di oggetti subscriber (tutte le istanze di un singolo tipo o due) che possono devono aggiornare autonomamente in risposta all'evento. Ma la maggior parte delle volte l'evento non si applica a loro, quindi lo ignorano. Quindi il metodo di gestione degli eventi nel Sottoscrittore ha un aspetto simile al seguente:
private void changeHandler(int id)
{
if (id == this.ID) // rarely true
val++;
}
Sono preoccupato perché l'inefficienza di questo approccio sta iniziando a colpire le prestazioni. (Dozzine di eventi aumentati ogni secondo, con migliaia di abbonati, sta diventando non trascurabile.)
Ora, succede proprio che il Publisher, in questo caso, sappia a quali sottoscrittori si applica ogni particolare evento (che è come può passare il parametro id
), così ho potuto bypassare completamente la strategia Event e fare in modo che l'editore aggiorni ciascun abbonato "manualmente" (per così dire). Ma ciò renderebbe il sistema più strettamente accoppiato, cosa che stavo cercando di evitare.
Esiste un approccio più efficiente a questa strategia di progettazione rispetto a quello che sto attualmente utilizzando? O un modello migliore del tutto che manterrebbe la separazione delle preoccupazioni tra l'editore e gli abbonati?