java属性 - 要公开还是不公开?

rin*_*rer 5 java properties

这可能是一个古老的问题,我相信每个人都有自己的方式.假设我定义了一些属性,例如

secret.user.id=user
secret.password=password
website.url=http://stackoverflow.com
Run Code Online (Sandbox Code Playgroud)

假设我有100个不同的类和位置,我需要使用这些属性.哪一个是好的(1)我创建了一个Util类,它将加载所有属性并使用键常量为它们提供服务.例如:Util是一个加载所有属性并保持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)
Run Code Online (Sandbox Code Playgroud)

所以,无论我需要这些属性,我都可以采取以上措施.

(2)我创建了一个有意义的类来表示这些属性; 比如,ApplicationConfig并提供getter以获取特定属性.所以上面的代码可能如下所示:

ApplicationConfig config = ApplicationConfig.getInstance();
doSomething(config.getSecretUserId(), config.getPassword());
//ApplicationConfig would have instance variables that are initialized during
// getInstance() after loading from properties file.
Run Code Online (Sandbox Code Playgroud)

注意:这样的属性文件将来只会有一些细微的变化.

我个人的选择是(2) - 让我听一些评论?

Jer*_*emy 1

我发现第一种方法过于冗长。(特别是如果预计属性不会发生太大变化。)此外,通过使用第二种方法,您可以在加载属性时而不是使用属性时处理转换/类型问题。