Ricorda che i pattern non sono ricette magiche. Non esiste un modello per ogni singolo problema. E non tutti i problemi rispondono a un modello.
In questo caso specifico, come già sottolineato da @Mike Nakis, il problema potrebbe essere il modo in cui si esprime il concetto Price
. Manca di informazioni significative e risorse preziose. Ad esempio, anche il consumatore del Webservice potrebbe aver bisogno di conoscere la valuta o l'importo nel suo formato di sola lettura. Non è vero?
Al momento, Price
include solo un float.
Che cosa succede se forniamo alcune informazioni più pertinenti? 1 . Ad esempio
public class Prize {
BigDecimal amount;
Locale locale;
public BigDecimal getAmount(){ ... }
public String getCurrencyCode(){
return Currency.getInstance(locale).getCode();
}
public String getCurrencySymbol(){
return Currency.getInstance(locale).getSymbol();
}
public String getFormattedAmount(){
return DecimalFormat.getCurrencyInstance(locale).format(amount);
}
}
Ora, Price
è in grado di trasferire qualsiasi informazione che gli utenti / i servizi web potrebbero aver bisogno di sapere. Ad esempio, l'invio di getAmount
insieme a getCurrencyCode
consente ai consumatori di eseguire conversioni valutarie. D'altra parte, se non vogliamo che i consumatori modifichino il amount
o la sua rappresentazione, potremmo inviare solo getFormattedAmount
.
Tornando alla domanda principale, poiché Price
è in grado di trasferire la sua rappresentazione in modi diversi, non è necessario copiare e incollare le trasformazioni su tutto il codice.
1: Questo approccio potrebbe portarti a salvare anche le impostazioni internazionali o la valuta.
Secondo l'API Java, Locale mi sembra un'informazione più preziosa da perseguire rispetto al codice di valuta. O salva entrambi.
Per ulteriori informazioni sulla Valuta, consulta il Documento API .