假设我有一个实用程序类DateUtil(见下文)。要使用此方法 调用方法使用DateUtils.getDateAsString(aDate)。删除会更好吗? static修饰符并使DateUtil成为一个spring bean(请参阅DateUtilsBean)并将其注入调用类 或者只是保持原样?
使用静态我可以看到的一个缺点是关于模拟的问题,请参阅How to mock with static methods?
public class DateUtils {
public static String getDateAsString(Date date) {
String retValue = "" // do something here using date parameter
return retValue;
}
}
Spring Bean版
@Component
public class DateUtilsBean {
public String getDateAsString(Date date) {
String retValue = "" // do something here using date parameter
return retValue;
}
}
答案 0 :(得分:28)
我不这么认为。 DateUtils类听起来像一个纯实用程序类,它没有任何副作用,只是处理输入参数。这种功能也可以保留在静态方法中。我认为你很可能不想模拟约会辅助方法。
答案 1 :(得分:12)
我同意Sean Patrick Floyd。
这是我的标准:如果类的方法只对它们接收的参数执行操作,没有外部依赖(数据库,文件系统,用户配置,其他对象/ bean等),那么我会这样做使用静态方法,通常在带有私有构造函数的final类中。
否则,我会使用Spring bean实现它。
所以,在你提出的情况下,根据这个标准,我会用静态方法编写一个类。
问候。
答案 2 :(得分:9)
最好将它声明为Spring bean,因为它的生命周期然后由Spring管理,你最终可以注入依赖项,汇集对象,以及以适当的方式测试它,而不是说话您可以将它用作常规对象并将其作为参数传递,重新定义子类中的方法...等。
简而言之,是的,在大多数情况下它会是更好的设计。然而,在暴露的简单情况下,它没有太大的区别。