Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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_Swing_Singleton_Openfiledialog - Fatal编程技术网

Java 我应该将文件对话框实现为单例吗?

Java 我应该将文件对话框实现为单例吗?,java,swing,singleton,openfiledialog,Java,Swing,Singleton,Openfiledialog,我正在开发一个基于swing的应用程序,其中使用了许多文件对话框?所以我说,为什么不制作一个FileDialog对象,而不是所有这些实例,并在整个项目中使用它呢?这是一个好的假设吗?这是否有任何性能改进 谢谢我将创建一个静态FileDialog类,每当需要打开一个新实例时,它都会生成FileDialog的一个新实例,而不是在整个应用程序中共享一个单一实例 这将使您省去从对话框中读取正确路径的麻烦,或者有人打开了对话框并选择了新路径,而现在您引用的是新路径而不是最初选择的路径,等等。这是一个很好的

我正在开发一个基于swing的应用程序,其中使用了许多文件对话框?所以我说,为什么不制作一个FileDialog对象,而不是所有这些实例,并在整个项目中使用它呢?这是一个好的假设吗?这是否有任何性能改进


谢谢

我将创建一个静态FileDialog类,每当需要打开一个新实例时,它都会生成FileDialog的一个新实例,而不是在整个应用程序中共享一个单一实例


这将使您省去从对话框中读取正确路径的麻烦,或者有人打开了对话框并选择了新路径,而现在您引用的是新路径而不是最初选择的路径,等等。

这是一个很好的用例示例,应用程序性能并不重要,问题实际上属于问题解决的过早优化类。为什么?使用FileDialog意味着您正在与用户交互,即使用户熟练掌握了快捷键技巧,也会比应用程序慢很多数量级。一个快速的用户在一分钟内可以打开、使用和关闭多少个文件对话框?说一打。你不必关心一分钟内来来往往的十几件东西。甚至不应该出现在你的雷达上。把你的精力用在别处。事实上,您应该每次都创建一个新对象,避免任何缓存问题。

为什么将implement作为一个单例?你能确认显示两个文件对话框永远不会发生吗

最好把它作为一门普通课;你不想建立限制,这可能会成为以后的痛点


它不像你的应用程序会被数以百万计的文件对话框调用严重超载,谁知道呢,也许有一天,拥有两个文件对话框将是正确的解决方案。即使不同时显示它们,在文件传输程序中,在“源”对话框中保存历史记录并在“目标”对话框中单独保存历史记录可能是一件好事。

忘记性能/速度。这不要紧。语义很重要。重复使用同一个文件对话框可能会给你免费的东西。对话框是否每次都在同一目录中启动?如果它是同一个实例,则会发生错误。如果要创建新对话框,则必须自行设置启动目录


还有,为什么不可能创建多个实例?只需在您的框架中创建一个实例成员,就可以使用它了

+1说得很好,并且具有过早优化的优点。