java - 编写 Util 类的最佳方式

标签 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){
        ...
    }
    ...
}

我想知道在内存分配方面哪种方法更好 提前致谢

最佳答案

永远不要编写单例。如果你确实想要静态字段(不想要),那么就写static。对于(单一实现)实用程序方法,在客户端上强制使用额外的对象是没有意义的。

看看 RuntimeSystem 造成的困惑,尽管它们本质上是相同的。

传统上,实用程序类被编写为具有静态方法的类。可以添加抛出异常的私有(private)构造函数来防止添加默认构造函数,但会增加代码的额外困惑(尽管减少了文档)。添加不必要的 final 也很常见。

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

如果您确实想要简洁的代码,请使用接口(interface)。您可以避免每次都编写 public,并且常量可以省略 public static。这显然不是很受欢迎,因为客户端有可能通过实现该接口(interface)来破坏自己的代码。请参阅“Swing ”。

关于java - 编写 Util 类的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53539823/

相关文章:

java - 我怎样才能找到数组中三个最低整数的位置?

java - IOException : "Received authentication challenge is null" (Apache Harmony/Android)

java - Java3D中围绕特定点旋转

java - 如何以内存有效的方式对大型 HashMap 进行排序?

条件跳转或移动取决于未初始化的值?

c - 微内存管理器错误

c - 为字符串数组分配内存

c# - 静态方法线程安全

javascript - 如何在自定义类上调用静态方法? JS

java - 如何初始化一个静态数组?