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

标签 java properties

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

secret.user.id=user
secret.password=password
website.url=http://stackoverflow.com

假设我有 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)

因此,只要我需要这些属性,我就可以执行上述步骤。

(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.

注意:这样的属性文件将来只会有微小的变化。

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

最佳答案

以最直接的方式进行(具有静态值的类):

package com.domain.packagename

public class Properties {
    private static String hostName;
    public static getHostName() { return hostName; }
    private static int port;
    public static int getPort() { return port; }

    public static void load() {
        //do IO stuff, probably
        hostName = ??;
        port = ??;
        //etc
    }
}

关于java 属性 - 公开还是不公开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2380937/

相关文章:

java - 如何让 monthName 显示?

java - 子串索引范围

java - Hibernate hbm2ddl.auto 配置的可能值是什么,它们的作用是什么

c# - 如何存储对属性的引用

变量的 JavaScript 属性

properties - Spring @Value 属性在自定义 pojo 中为 null

c# - 如何实现虚拟静态属性?

java - 为什么 InputStream.readObject 花费大量时间读取序列化对象

java - 从文本读取 srt 文件时出现奇怪的字符

java - twitter4j - 如何配置?