Iniezione delle dipendenze e incapsulamento dei dati

0

Diciamo che ho Game class. Questa classe di gioco viene costruita con tutte le sue dipendenze da Game(ITimer timer, IPointsUpdater updater) . Quando timer aumenta Elapsed il updater calcola i punti attuali dell'utente. timer è memorizzato in una proprietà readonly privata nella classe game .

Ora voglio incollare tutto ciò insieme. Ho una sorta di interfaccia utente e ogni volta che i punti vengono aggiornati voglio aggiornare la mia interfaccia utente. Questo è come lo farei io:

var timer = new Timer(500);
var updater = new Updater();
var game = new Game(timer, updater);

timer.Elapsed += (_,_) => RefreshUi();

Va bene iscriversi direttamente al timer? Ho delle alternative:

  • Potrei rendere pubblica la proprietà timer nella classe game pubblica. Quindi potrei iscrivermi direttamente a game.Timer.Elapsed . Questo mi sembra contro l'incapsulamento dei dati, perché questo mi permetterebbe di iniziare e di fermare anche il timer.
  • Potrei lasciare che game abbia un evento Updated o Elapsed e inoltrare direttamente l'evento Elapsed dal timer. Ciò lascia intatto il mio incapsulamento pur avendo più righe di codice da scrivere.

    Preferisco la mia soluzione utilizzando l'iniezione di dipendenza. È questa la migliore pratica? Grazie in anticipo!

posta selmaohneh 27.06.2018 - 11:19
fonte

0 risposte

Leggi altre domande sui tag