dev*_*ium 9 c# java oop singleton
我正在制作一个使用几个常量的程序.起初,每次我需要使用常量时,我都会将其定义为
//C#
private static readonly int MyConstant = xxx;
//Java
private static final int MyConstant = xxx;
Run Code Online (Sandbox Code Playgroud)
在我需要它的班级里.过了一段时间,我开始意识到在一个以上的课程中需要一些常量.
这时,我有3个选择:
我最后用第二个选项实现了我的代码.这是最好的选择吗?我觉得我可能错过了一些其他更好的选择.
在这里使用单例让我担心的是,该类的用户无法清楚该类正在使用单例.也许我可以创建一个包含所有常量所需的ConstantsClass,然后我将它在构造函数中传递给需要它的类?
谢谢
编辑:我主要用于复杂类型,而不是整数和字符串.至少在C#案例中有所作为,因为这意味着我无法使用const关键字.
没有关于C#的措辞,但在Java中有几种方法可以解决这个问题.
将访问修饰符更改为默认值(仅限包)或public.最直接的解决方案.
将它们分组为私有或public enum.如果这些值彼此相关,则最直截了当.例如Role.ADMIN,Role.USER,Role.GUEST等.
在package-private中声明它们,或public interface让类实现它.只有当这些常量属于类必须遵守的某个契约时才这样做.
将它们放在属性文件中并加载为private static final Properties并添加一个public static String getProperty(String key).将它包装在一些包私有或public Configuration类中.如果这些常量可能对您可以在外部控制的更改敏感,则更有用.
常量不需要被实例访问,因此整个单例概念毫无意义.