我有几个常用常数被多个类使用。
在这种情况下,最有效的设计方法是什么:
或者还有其他更好的方法吗?
注意: - 我正在寻找适用于此的最佳OO技术。
答案 0 :(得分:3)
常量应该与某种类型严格相关,它们不应该只是“存在”。一个Constants
类似乎很方便,但它很快就会变得不可维护,更不用说许多人认为它是反模式。
如果没有看到您的代码,很难提出改进建议,但如果您发现自己需要在类型范围之外的几个不同类中定义相同的常量,那么您似乎需要重新考虑您的设计。
答案 1 :(得分:1)
提供Constant Util类是最干净的方法。
class ConstantUtil {
public static final int MAX_SIZE = 1<<10;
}
典型的文件夹heirarchy就像这样
com.example.util.ConstantUtil
答案 2 :(得分:0)
您可以尝试创建一个包含所有常量的类(即第二种方法)。
例如:
classname : MyConstantsClass.java
public static final String SOME_CONSTANT="value";
然后像
一样使用它MyConstantsClass.SOME_CONSTANT
有些人建议使用接口来创建常量,那么我认为这不是一个好选择。使用接口来创建常量也有一些缺点:
- 接口的使用不允许实现将常量转换为可见/人类可读的机制 表示。
- 如果常量是“实现细节”,则接口可能不是该值的自然位置(CodeSmells,ListenToTheCode)。
- 由于Java编译器优化,如果常量更改,则必须使用常量完成所有类的代码重新编译。 只是更改界面并重新编译它不起作用(这 但是,所有常量都定义为'static final')
请参阅:
答案 3 :(得分:0)
常数类:
<div id="div">
<div id="slide0">Slide0</div>
<div id="slide1">slide1</div>
<div id="slide2">slide2</div>
<div id="slide-right0">slide-right0</div>
<div id="slide-right1">slide-right1</div>
<div id="slide-right2">slide-right2</div>
</div>
用法:
interface Constants {
int CONSTANT_ONE = 0;
int CONSTANT_TWO = 1;
int CONSTANT_THREE = 2;
String BASE_PATH = "YourPath";
}
修改强>
在大多数情况下,如果不需要通过某个类实现此接口,则使用if (someValue == Constants.CONSTANT_ONE) {
}
而不是interface
,则不需要添加此class
,因为默认情况下它是{{} 1}}所以你的代码看起来更干净。
答案 4 :(得分:-1)
设计一个类似AppUtil.java的类,并定义你的常量public static final,如下所示:
public class AppUtil
{
public static final String IMAGE_STATUS="0";
}
当你想使用变量时。如下所示:
AppUtil.IMAGE_STATUS