Sto incontrando problemi con un approccio che sto prendendo e ora mi chiedo se ho appena iniziato il percorso sbagliato e dovrei ripensare al mio approccio. Ecco cosa sto tentando.
Vorrei utilizzare un Enum per rappresentare diversi possibili stati dell'account (ci sono altri set di dati finiti che imposterò usando un approccio duplice):
- A, attivo
- I, non attivo
- P, in sospeso
Questi account status devono essere presentati all'utente nella loro lingua, se preferisci.
Esempio: lo stato dell'account è A, lo mostra come attivo per gli anglofoni inglesi e Activo per lo spagnolo.
Ci sono anche situazioni in cui mi piacerebbe mostrare un elenco a discesa di tutti i possibili stati dell'account nella preferenza locale appropriata.
Approccio attuale
Utilizza una classe AccountStatusEnum con valori di (A, I, P).
In una variabile membro privata statica, memorizza un EnumMap di Account Status localizzati all'interno di una EnumMap di possibili Locales.
Esempio:
private static EnumMap<LocaleEnum, EnumMap<AccountStatusEnum, String>> localeAccountStatuses = new EnumMap<LocaleEnum, EnumMap<AccountStatusEnum, String>>(LocaleEnum.class);
Questo verrebbe caricato all'interno di un blocco di inizializzazione statico.
Potrei quindi utilizzare i seguenti metodi per ottenere tutti i valori per un elenco a discesa:
public static EnumMap<AccountStatusEnum, String> getAccountStatuses(LocaleEnum locale) {
return localeAccountStatuses.get(locale);
}
Oppure potrei usare questo metodo per ottenere una singola descrizione per un dato Enum:
public String getDescription(LocaleEnum locale){
return getAccountStatuses(locale).get(this);
}
Esempio di utilizzo: AccountStatusEnum.A.getDescription (LocaleEnum.es_MX);
Sono curioso dei tuoi pensieri su questo approccio e di possibili approcci migliori per realizzare la stessa cosa.
Modifica La logica per ottenere i valori per popolare gli Enum sarebbe centralizzata all'interno di una singola classe helper. Pertanto, se la fonte delle descrizioni cambia a venire da una nuova fonte, la modifica del codice è ridotta a icona.
Grazie