Questo potrebbe essere un problema di età avanzata e sono sicuro che ognuno ha i propri modi. Supponiamo che io sono alcune proprietà definite comeProprietà java: esporre o non esporre?
secret.user.id=user
secret.password=password
website.url=http://stackoverflow.com
Supponiamo che io sono 100 diverse classi e posti in cui ho bisogno di utilizzare queste proprietà. Quale è buono (1) Creo una classe Util che caricherà tutte le proprietà e le servirà utilizzando una costante di chiave Ad esempio: Util è un singleton che carica tutte le proprietà e continua con la chiamata getInstance().
Util myUtil = Util.getInstance();
String user = myUtil.getConfigByKey(Constants.SECRET_USER_ID);
String password = myUtil.getConfigByKey(Constants.SECRET_PASSWORD);
..
//getConfigByKey() - inturns invokes properties.get(..)
doSomething(user, password)
Quindi ovunque io abbia bisogno di queste proprietà, posso eseguire i passaggi sopra.
(2) Creo una classe significativa per rappresentare queste proprietà; per esempio, ApplicationConfig e fornire getter per ottenere proprietà specifiche. così sopra il codice può apparire come:
ApplicationConfig config = ApplicationConfig.getInstance();
doSomething(config.getSecretUserId(), config.getPassword());
//ApplicationConfig would have instance variables that are initialized during
// getInstance() after loading from properties file.
Nota: il file delle proprietà in quanto tale avrà solo piccole modifiche in futuro.
La mia scelta personale è (2) - fammi sentire alcuni commenti?
Le proprietà non dovrebbero essere memorizzate nella cache in ogni caso, quindi nessuna penalizzazione delle prestazioni se lo si è caricato in più punti diversi? – willcodejavaforfood
Perché il piatto della caldaia? Non sono un buon suggerimento. Inoltre, l'ho taggato con il design del programma. Mi piace il codice che funziona bene e che legge bene. –