创建静态实用程序类的缺点是什么?我做的越多,我发现它们就越有用.我知道他们缺乏面向对象的设计,但我仍然比他更应该爱他们.是否还有其他用途?
Oli*_*rth 16
在正确的背景下,他们没有任何问题.如果你有独立的无状态方法(比如那些找到的方法java.lang.Math),那么静态类就是它们的理想之地.他们在课堂上的唯一原因是因为Java没有独立方法的概念.
JB *_*zet 13
IMO的主要缺点是使用大多数模拟框架不可能模拟这种实用方法的实现,以便使用这些实用方法对某些类进行单元测试.
例如,使用System.currentTimeMillis()很容易获得当前时间.但是当你必须测试一个使用当前时间做一些工作的类时,就不可能模拟该方法使它返回一个特定的时间点.使用实现Clock接口并注入到对象中进行测试的对象使其更容易:您可以创建一个模拟时钟实现,在要求获取当前时间时返回特定日期.