静态成员的替代方案

时间:2014-09-05 18:19:21

标签: java .net class design-patterns

我想知道何时将一个只包含静态方法和变量的类视为一种不好的做法,以及有哪些替代方法可以避免这种做法。

我知道,当您需要功能但无法或不需要对象的实例时,它们对于所有情况都是必需的。然而,我想知道这种情况是不是不良做法的结果,也不是糟糕的设计决定。

由于

3 个答案:

答案 0 :(得分:4)

一个常见的替代方法是使用单个实例或只有一个实例的实例类。

这是首选,因为它更容易测试,并注入不同的功能。

如果您的班级没有字段

  • 使用没有实例的枚举类作为实用程序类。
  • 尽可能将静态方法移动到一个显示为参数之一的类。
  • 如果需要实现接口,请使用无状态单例。

答案 1 :(得分:2)

让文件只包含最终的静态变量没有问题,它只是一种对常量进行分组的方法。

然而,仅使用静态方法的典型helper / utils类往往会引发错误的OO设计,或者它们是它的症状。

一个常见的情况是它是一个DateUtil课程,类别日期设计得很糟糕,你需要设施来使用它。虽然创建你的很有吸引力,但使用正确的Date API(如Yoda Time)或新的Date API会更好。

因此,尽量避免使用这种类,并将这些方法放在与。相关的对象附近。

答案 2 :(得分:0)

我发现最好只尝试以本机java包的方式使用静态方法和值。锅炉板代码和纯功能的东西。 EX:Trig函数,解析/转换数据等