Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中单实例类的最佳实践是什么?_Java_Class - Fatal编程技术网

java中单实例类的最佳实践是什么?

java中单实例类的最佳实践是什么?,java,class,Java,Class,在我的程序中,我有一个菜单系统,其中每个菜单都有一个单独的类,例如MainMenu将是一个单独的类。但是这个类应该只实例化一次,在我实例化它之后,它被保存在一个列表中,这个列表是在那之后使用的。我应该使用另一个解决方案而不是单独的类吗?或者我应该将构造函数设置为私有,然后在类内部设置一个私有实例?我觉得这违反了OOP,但我没有看到其他解决方案。不要将构造函数设置为私有,这会在以后要对其进行单元测试时产生问题 只需实例化一次。没有任何软件会多次秘密实例化您的类。 如果要避免Singleton,那么

在我的程序中,我有一个菜单系统,其中每个菜单都有一个单独的类,例如MainMenu将是一个单独的类。但是这个类应该只实例化一次,在我实例化它之后,它被保存在一个列表中,这个列表是在那之后使用的。我应该使用另一个解决方案而不是单独的类吗?或者我应该将构造函数设置为私有,然后在类内部设置一个私有实例?我觉得这违反了OOP,但我没有看到其他解决方案。

不要将构造函数设置为私有,这会在以后要对其进行单元测试时产生问题

只需实例化一次。没有任何软件会多次秘密实例化您的类。
如果要避免Singleton,那么在稍后尝试进行单元测试时,几乎无法重置实例

不要将构造函数设置为私有,这会在以后要对其进行单元测试时产生问题

只需实例化一次。没有任何软件会多次秘密实例化您的类。
如果要避免Singleton,那么在稍后尝试进行单元测试时,几乎无法重置实例

…我每天都和软件恐怖分子一起工作。我们称他们为“同事”。将类设为单例将比“不要直接实例化!!”更有效地阻止误用。软件恐怖分子赢了!(抱歉让我想到了反击)可能,更好的解决方案是让InzaneNova研究注入框架。也许是春天。如果你使用Singelton,那么你就是软件恐怖分子的头目。在单元测试中几乎不可能实例化它们。我使用反射的restSingleton()解决方案也不好。如果你创建一个像ios这样的APi,事情可能会改变;Java有一个很棒的内置DI系统——它使用
new
并将参数传递给构造函数!我每天都和软件恐怖分子一起工作。我们称他们为“同事”。将类设为单例将比“不要直接实例化!!”更有效地阻止误用。软件恐怖分子赢了!(抱歉让我想到了反击)可能,更好的解决方案是让InzaneNova研究注入框架。也许是春天。如果你使用Singelton,那么你就是软件恐怖分子的头目。在单元测试中几乎不可能实例化它们。我使用反射的restSingleton()解决方案也不好。如果你创建一个像ios这样的APi,事情可能会改变;Java有一个很棒的内置DI系统——它使用
new
并将参数传递给构造函数!