拥有一个不实例化对象的静态类是不好的做法

时间:2015-06-11 00:00:47

标签: java class oop

我读到一个类就像一个对象的蓝图。那么声称一个类被认为是不好的做法,但是然后在程序中,从来没有实际创建类的实例(但只是在类中有静态方法)?

3 个答案:

答案 0 :(得分:7)

我想说在面向对象编程中,我应该最小化静态的使用,但它们确实有一席之地。在静态方法/变量适当的时候开发一个很好的感觉需要一些时间,所以我开始只在一小部分情况下使用它们,鼓励它们,然后在获得经验时扩展你的使用。列出一些适当的用途:

在任何关于使用静力学的讨论中,值得discussing dependency injection and writing testable code,因为这些原则不鼓励使用global state,这通常是被宣布为静态的副作用。

答案 1 :(得分:3)

如果你的班级没有任何与之相关的状态(意味着没有实例变量),那么拥有所有静态方法都没关系。一个示例是一个简单的实用程序类,它封装了每个DAO中需要的行为,比如关闭数据库连接,语句和结果集。我对我创建的每个项目都这样做。

但是,您希望小心使用静态方法,因为它们无法被覆盖,并且在某些情况下很难进行测试。

答案 2 :(得分:-2)

静态被认为是一种非常糟糕的做法,原因有几个

  • 很难测试
  • 你会非常快地发现自己在改变价值观,而不知道自己在哪里做到这一点"神奇地发生了#34;

静态类的最大问题是您无法模拟它们,这意味着您无法以良好的方式测试使用它们的代码, 某些人需要实用程序类,但它本身被认为是一种气味,因为在SOLID原则中,一个类应该有它的责任,并且通过创建一个实用程序(通用)类,你可以打破单个类。责任原则"

静态原则也与语言无关,但与OO原则本身无关。

there are huge amount of articles

并且SO itself

就足够了