我一直在寻找一个由离岸组织开发的代码.我看到每个模块至少定义了一个"常量接口".示例(不是现实世界):
public interface RequestConstants{
//a mix of different constants(int,string,...)
public static final int MAX_REQUESTS = 9999;
public static final String SAMPLE_REQUEST = "Sample Request";
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,它是一种反模式,因为它们在运行时没有任何实用性,应该以不同的方式避免或解决.什么是优雅的方式来代表这个?可以enums用吗?
我更喜欢将常量放在他们认为最相关的类中,然后如果我必须在其他地方引用它们,那么就这样做 - 如果有意义的话可能使用静态导入(例如Math.PI).
将常量放在接口中的唯一真正原因是允许您"实现"无方法接口,并通过简单的名称访问常量,而无需进一步限定.静态导入删除了这个原因.
除非所有参数都密切相关,否则枚举可能不是一个好主意。对于您示例中的两个参数,我想说它们的相关性不够密切,不足以符合枚举的资格。
但包含这样的常量类/接口并不一定是一个坏主意。它确实具有集中化的优点,这意味着可以轻松地将这些配置内容移到程序之外——例如移至属性文件、命令行解码器、数据库甚至套接字接口——对系统的影响最小。其他班级。这实际上是设计将采取什么方向的问题。
然而,除非您正在考虑走这条路,否则我想说,在使用相应参数的类中使用静态final是正确的方法,正如已经建议的那样。
| 归档时间: |
|
| 查看次数: |
858 次 |
| 最近记录: |