Capisco che un'architettura basata sugli eventi porti al disaccoppiamento. Tuttavia, l'utilizzo di un'architettura event-driven può portare a un utilizzo minimo di "getter / accessor"? Sembra che se tu avessi qualche tipo di gestore di eventi come BalanceChanged che passa la nuova Balance in giro, non avrai bisogno di un getter per accedere al Saldo di un oggetto Account. Sto pensando a questo in modo errato?
Esempio:
public class Account
{
public void MakeContribution(Contribution contribution)
{
contributions.Add(contribution);
OnBalanceChanged(EventArgs.Empty);
}
private double calculateBalance()
{
double balance = 0;
foreach (Contribution contribution in contributions)
balance += contribution.Amount;
return balance;
}
public event EventHandler BalanceChanged;
protected virtual void OnBalanceChanged(EventArgs e)
{
// Create new AccountEventArgs with the calculated balance
// Pass AccountEventArgs instead of EventArgs.Empty
BalanceChanged?.Invoke(this, EventArgs.Empty);
}
private IList<Contribution> contributions = new List<Contribution();
}
E poi ereditare EventArgs per aggiungere un attributo double Balance
. O il passaggio dei dati attraverso l'evento (messaggi) non è una buona idea?