Java 最佳实践 : Class with only static methods

标签 java static singleton nio

我有一个应用程序,其中有一个名为 PlausibilityChecker 的类。此类只有静态方法,例如 checkZipcodeFormatcheckMailFormat。我在我的 GUI 类中使用它们来检查输入,然后再将其发送到较低层。

这是好的做法吗?我以为我只会使用静态方法,这样我就不必关心将实例传递给 GUI 类或在每个不引用 gui 对象的 gui 类中拥有一个实例字段。

我注意到 Java NIOFiles 类只有静态方法,所以我认为这不会是那么可怕的错误。

最佳答案

我会说你做得对。除此之外,对您的实用程序类的一些建议:

  • 确保它没有任何状态。也就是说,类中没有字段,除非它被声明为 static final。此外,请确保该字段也是不可变的,例如字符串s.
  • 确保它不能是其他类的父类(super class)。将类设为 final 以便其他程序员无法扩展它。
  • 这个值得商榷,但你可以声明一个无参数构造函数private,所以没有其他类可以创建你的实用程序类的实例(使用反射或类似的方法可以,但没有需要与类(class)一起保护)。为什么你可能不这样做?好吧,这是您想要/需要注入(inject)实用程序类的实例的奇怪情况,例如通过一个接口(interface)而不是直接在你的类中使用它。 Here's an example of this .这种设计确实很奇怪,但可能会发生(如上面的链接所示),但如果您不会在这种情况下运行,最好的建议是保持构造函数 private

有很多库提供实用程序类来帮助我们程序员的工作。最著名的之一是 Apache Common库集。它是开源的,您可以检查代码以了解他们如何设计这些实用程序类以创建您的。 (免责声明:我不工作或不支持这些库,我是他们的快乐用户)

重要提示:Avoid using a singleton for your utility class .

关于Java 最佳实践 : Class with only static methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31409982/

相关文章:

C++ 单例实现 : pimpl idiom for singletons, 优点和缺点

java - 如果单例类构造函数是私有(private)的并且从其他类调用方法*参见代码*那么它是如何工作的

c# - 具有参数的对象的单例类

java - 代码甚至没有执行。 java

java - 在同一个类中创建一个类的引用变量是否正确?它与使用 new 关键字创建的普通对象有何不同?

NGINX 缓存静态文件

c++ - 静态函数调用错误 "C++ requires a type specifier for all declarations"

javascript - 如何在 Google 脚本中将公式设置为值?

Java Hadoop FileSystem 对象到 File 对象

Java - 列出 int 数组中重复值的索引