我应该将文件对话框实现为Singleton吗?

时间:2010-10-18 14:20:04

标签: java swing singleton openfiledialog

我正在开发一个基于swing的应用程序,我正在使用许多FileDialogs?所以我说为什么不制作一个FileDialog对象而不是所有这些实例并在整个项目中使用它?这是一个很好的假设吗?这会有任何性能提升吗?

由于

4 个答案:

答案 0 :(得分:8)

这是一个很好的例子,其中应用程序性能并不重要,问题实际上属于解决问题的过早优化类。为什么?使用FileDialog意味着您正在与用户进行交互,即使熟练使用快捷键功夫,技术人员也会比应用程序慢很多个数量级。快速用户可以在一分钟内打开,使用和关闭多少个FileDialog?说一打。你不应该在一分钟内关心十几个物体来来往往。甚至不应该出现在你的雷达上。在别处使用你的能量。实际上,您应该每次都创建一个新对象,避免任何缓存问题。

答案 1 :(得分:3)

我会创建一个静态FileDialog类,每次需要打开一个新的FileDialog实例,而不是在整个应用程序中共享一个Singleton实例时。

这会让你头疼的是试图弄清楚你是否从对话框中读取了正确的路径,或者是否有人打开了对话框并选择了一条新路径,现在你引用了这条新路径而不是最初选择的路径等......

答案 2 :(得分:1)

为什么实现是单身?你能真正验证显示两个文件对话框永远不会发生吗?

最好将它作为普通班级;你不想建立可能在以后成为痛点的限制。

并不是因为数百万次调用文件对话框会严重影响你的应用程序,并且谁知道,也许有一天它会成为拥有两个文件对话框的正确解决方案。即使您不同时显示它们,也许在“源”对话框中保存历史记录并在“目标”对话框中具有单独的历史记录,这将是文件传输程序中的祝福。

答案 3 :(得分:0)

忘记表现/快速。这没关系。语义很重要。重复使用相同的文件对话框可以免费提供。对话框每次都会在同一目录中启动吗?它将是相同的实例。如果要创建新对话框,则必须将启动目录设置为自己。

为什么不能创建多个实例呢?只需在框架中创建一个实例成员并完成它。

相关问题