对于我的许多 java 项目,我广泛使用数据库,我通常做的是有一个property.xml
文件来保存我所有的字符串和设置。
然后我会有一个类CNST
来保存与 xml 文件中的静态常量相对应的所有静态常量。
这些常量在程序启动时由 xml 文件初始化一次,并在以后的程序中用作全局变量。
然而,在这几天阅读了很多文章之后,似乎使用全局变量根本不是一个好习惯。那么请任何人都可以指出这种情况的良好做法吗?谢谢。
使用全局变量意味着它们对许多可以操作数据的类可见。
因此,如果数据广泛可见,您将不得不处理好您的数据。
而且,如果您使用多线程,那么您将遇到麻烦,因为任何人都可以修改该数据,因此数据损坏的范围很大。
作为实践,我遵循以下几点:
一般来说,如果可能的话,应该避免使用全局变量=>但是,如果它们是常量,这不是问题。对于这种情况,当您(可能)在开始时初始化此全局设置包装器对象并且之后没有任何更改时,有以下选项:
public static final
中初始化的常量 ( )static
private static final
在块中初始化变量static
并通过 getter 公开private final
通过 getter 公开变量与第 1 点相比,第 2 点和第 3 点的优势在于,在 getter 方法中,您已经封装了变量的值,并且可以更改/插入操作要返回给调用方法的值的代码,而不会影响依赖于它的(调用)代码。
您可以自由使用公共静态常量或变量。如果您使用非静态变量,那么好的做法是使用 Getters 和 Setters。如果您的类仅包含静态常量,那么您还可以使用私有构造函数来限制创建此类的实例。
public class Global {
public static final int A;
public static final int B;
private Global() {} // use only when you have only static fields and methods
static {
A = 1;
B = 2;
}
}
您可以创建一个public static
变量而不是全局变量,这将是一个更好的主意。
看看这个链接。
另一种方法是创建一个遵循该singleton
模式的类,因此该类只能有一个实例,并将变量保留在单例类中,并使用get
和set
方法访问它。
编辑1: -
在声明常量的情况下使用旧样式。像这样的东西: -
(public/private) static final TYPE NAME = VALUE;
在这种情况下,我不建议创建一个类。