编写Util类的最佳方法

时间:2018-11-29 13:11:29

标签: java memory-management static singleton

我是Java新手 我想为自己的目的编写util类,例如FileUtil,DBUtil,...

但是有些人将util类中的所有方法都写为静态方法

class FileUtil{
    public static File openFile(String path){
        ...
    }
    public static File readFile(String path){
        ...
    }
    ...
}

以及将util类写为单例类,将方法写成public的

class FileUtil{
    private FileUtil(){}
    public FileUtil getInstance(){
        ...
    }
    public File openFile(String path){
        ...
    }
    public File readFile(String path){
        ...
    }
    ...
}

我想知道在进行内存分配时哪种方法更好 预先感谢

2 个答案:

答案 0 :(得分:1)

从不写单例。如果您真的想要静态字段(不要),请编写static。对于(单一实现)实用程序方法,没有必要在客户端上强制使用额外的对象。

看看RuntimeSystem造成的混乱,尽管本质上是相同的。

传统上,实用程序类是使用静态方法编写的类。可以添加引发异常的私有构造函数,以防止添加默认构造函数,但会给代码增加额外的混乱(尽管减少了文档编制)。另外,添加不必要的final也很常见。

单元素枚举在单例中很流行(不要写单例)。使用相同的参数实用程序类应该是无元素的枚举,尽管没有明显的原因它并不流行。单元素枚举和无元素枚举都向类添加了废话方法。

如果您真的想要简洁的代码,请使用接口。您避免每次都必须写public,而常量可以忽略public static。这显然不是很流行,因为客户端可能会通过实现接口来破坏自己的代码。请参见Swing。

答案 1 :(得分:0)

实用程序:

实用程序类是不需要任何实例的类。他们提供了方法,可帮助您执行操作。


单曲:

单个实例是需要具有一个且只有一个实例的实例。单身人士的原因多种多样,也许您需要一个不应受到干扰的单一协调员...


FileUtil:

名字已经指出了,该类提供了方法以简化文件访问...


FileManager:

对象负责跟踪文件系统的完整性。除了FileManger,其他任何人都不能创建/删除文件,因此FileManager将是 singleton 。 (您的问题并没有要求使用文件管理器,但我想对FileUtils有所帮助)


内存使用率/清除代码

为什么回答这个问题:您认为您可以针对内存进行优化,但是干净的代码指出you should not optimize


摘要:

如果您真的不必使用Singleton,请不要使用它。使用普通的实用程序类(这是您要执行的操作)。