Util 的最佳写法 Class

Best way to write Util Class

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

但是有些人把utilclasses中的所有方法都写成静态方法

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

有些人将 util class 写成单例 classes,将方法写成 public

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

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

实用程序:

实用程序class是不需要任何实例的class。他们提供 方法 来帮助您做事。


单身人士:

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


FileUtil:

好吧,这个名字已经指出了这一点,这个 class 提供了 方法 来简化文件访问...


文件管理器:

这个对象负责跟踪文件系统的完整性。不允许其他人访问 create/delete 个文件,但只能访问 FileManger,因此 FileManager 将是一个 单例 。 (您的问题不要求文件管理器,但要对 FileUtils 有所帮助,我认为它会有所帮助)


内存使用/清理代码

为什么这个答案:你认为你可能会优化内存,但干净的代码指出 you should not optimize


总结:

如果您真的不需要,请不要使用 Singleton。使用一个普通的实用程序 class(顺便说一下,这是你想做的事情)。

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

看看 RuntimeSystem 造成的混乱,尽管本质上是一样的。

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

单元素枚举在单例中很流行(不要写单例)。使用相同的参数实用程序 classes 应该是无元素枚举,尽管没有明显的原因它并不流行。单个和无元素枚举都向 class.

添加无意义的方法

如果您真的想要简洁的代码,请使用接口。您不必每次都写 public,常量可以省略 public static。这显然不是很流行,因为客户有可能通过实现接口来破坏他们自己的代码。参见摇摆。