作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如果我必须设计一个实用程序类(例如 ByteUtils 或 StreamUtils 或 StringUtils),那么对它们来说最好的设计选择是什么。
PS:静态类是指具有静态方法的类(而不是内部静态类)
请就此设计选择提供建议?
最佳答案
我的实用程序类如下所示:
// final, because it's not supposed to be subclassed
public final class FooUtil {
// private constructor to avoid unnecessary instantiation of the class
private FooUtil() {
}
public static int doSomethingUseful() {
}
// ...
}
请注意,尽管这使实用方法易于测试,并且易于从外部访问,但它也使使用它们的类难以进行单元测试,因为模拟这些实用方法并不容易。拥有太多此类实用程序类可能表明缺乏 OO 设计(过程编程),并且确实会使代码难以测试。
如果您使用的是依赖注入(inject)框架(Spring、Guice 等),最好使用非静态方法使实用程序类可实例化,并使其成为可注入(inject)的单例。这样,使用这些实用方法的类可以通过模拟实用对象来进行测试。
关于java - 实用程序类应该是静态的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7074713/
我是一名优秀的程序员,十分优秀!