Ho una classe di quantità che fornisce il metodo minus
tra gli altri. Il risultato di questa operazione è ovviamente un altro importo.
La domanda è: come posso gestire i tre casi in base al significato di questa quantità in modo polimorfico?
Attualmente, sto semplicemente inserendo il valore del valore contenuto nella quantità, ma vorrei perfezionare questa implementazione. Breve esempio:
Amount remaining = amount.minus(other.amount);
switch (remaining.getRoundedValue().signum()) {
case -1:
return ...;
case 0:
return ...;
case +1:
return ...;
}
Tutti e tre i casi restituiscono lo stesso tipo di oggetto. Di fronte a questo tipo di problemi, in genere si sposta l'implementazione nella classe che conosce questo stato, come in questo caso, la classe di importo. Tuttavia, il codice che deve essere eseguito ha bisogno di variabili aggiuntive e includerle o passarle in una funzione della classe delle quantità romperebbe la sua coesione.