我想知道什么情况下只拥有静态方法和变量的类被认为是不好的实践,以及有哪些替代方法来避免这种情况。
我知道当你需要功能但不能或不需要对象实例时,它们是必需的。然而,我想知道这种情况是否是由于不良实践或错误的设计决策所导致。
谢谢
我想知道什么情况下只拥有静态方法和变量的类被认为是不好的实践,以及有哪些替代方法来避免这种情况。
我知道当你需要功能但不能或不需要对象实例时,它们是必需的。然而,我想知道这种情况是否是由于不良实践或错误的设计决策所导致。
谢谢
常见的替代方案是使用单例或实例类,其中只有一个实例。
这种方法更容易测试,并且可以注入不同的功能。
如果您的类没有字段
只有final static变量的文件没有问题,这只是一种分组常量的方式。
然而,仅包含静态方法的典型helper/utils类往往会引发不良面向对象设计或成为其症状。
一个常见的例子是DateUtil
类,Date类设计得太糟糕了,以至于需要使用工具。虽然创建自己的工具很诱人,但最好使用适当的日期API(如Yoda Time)或新的日期API。
因此,尽量避免这种类型的类,并将这些方法放在与相关对象紧密相关的位置。
我发现最好尝试只使用静态方法和值,就像本地Java包所做的那样。模板代码和纯功能性的东西。例如:三角函数、解析/转换数据等。