Esto podría ser un problema antiguo y estoy seguro de que todos tienen sus propias maneras. Supongamos que tengo algunas propiedades definidas comoPropiedades de Java: ¿exponer o no exponer?
secret.user.id=user
secret.password=password
website.url=http://stackoverflow.com
Supongamos que tengo 100 clases y lugares en los que tenga que utilizar estas propiedades diferentes. Cuál es bueno (1) Creo una clase Util que cargará todas las propiedades y las servirá usando una constante de clave Tales como: Util es un singleton que carga todas las propiedades y mantiene la llamada 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)
Entonces, donde sea que necesite estas propiedades, puedo hacer los pasos anteriores.
(2) Creo una clase significativa para representar estas propiedades; por ejemplo, ApplicationConfig y proporciona getters para obtener propiedades específicas. Así código anterior puede verse como:
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: El archivo de propiedades como tal tendrá sólo cambios menores en el futuro.
Mi elección personal es (2) - déjame escuchar algunos comentarios?
¿Las propiedades no se almacenarían en caché de todos modos, por lo que no se penalizaría el rendimiento si se cargaba en varios lugares diferentes? – willcodejavaforfood
¿Por qué placa de la caldera? No creo que sea una buena sugerencia. También tenga en cuenta que etiqueté esto con el diseño del programa. Me gusta el código que funciona bien y también funciona bien. –