静态方法和静态变量,设计不好的做法? [重复](Static Methods and stati

2019-08-02 22:44发布

可能重复:
静态变量为什么被认为是邪恶?

已经在大学学习面向对象编程和设计在几年前,我记得讲师变得有点生气,使用静态变量或静态方法的人,因为他们描述静是一个非常糟糕的设计。

我的理解是这样的东西类型的静态的,是值得获得全球性的“愿景”,即它可以被任何访问。

我的理解是正确的吗? 有关于使用静态的,使得它不好用的信息? 是有办法避免使用静态变量或方法在你的代码?

顺便说一句,我知道静态的主要方法是一个先决条件,以应用程序的成功运作。

Answer 1:

静态主要用于对访问类成员,而无需创建类的实例。 正如你知道,为什么我们正在编写public static void main()只是bcoz在运行时JVM可以在不创建类对象访问此方法并启动程序。

它取决于你的要求,你是如何使用的,或者说如何使用声明访问限定符为公营,私营,默认类的成员和保护的访问级别,而静态是为使该存取级别为静态。

不带静电,您必须声明你的成员作为公众,或者如果你继承你的类,然后让尽可能保护也。 由于在同一个包您定义的类,然后只是静态的继承类。 而对于使用没有inhert类,你需要创建一个类的对象,那么你就可以访问有成员(请注意,根据访问符)

这里是下面了解更多详细信息的链接

http://xahlee.info/java-a-day/access_specifiers.html

http://www.javabeginner.com/learn-java/introduction-to-java-access-modifiers



Answer 2:

有没有错,静态变量或方法。 只是,与OOP要尽可能多的行为尽可能与对象相关联,这意味着使用实例方法和变量。 话虽如此,有些情况下静态成员是必要的具体情况:构造函数(你提到)和Singleton模式就是很好的例子。



Answer 3:

静态变量和静态方法是完全不同的事情。

静态变量是坏的,除非它们代表某种“单”,如果他们这样做,那么在OOP中,最好创建实际的单例类(特别是如果你可以使用枚举单)。 除其他事项外,静态变量做多线程编程困难,能做到这一点,即使在单线程的程序,在那里你“意外”需要静态字段类的两个实例。

在另一方面静态方法一般也蛮好的,只要他们不访问任何静态数据,但只有在他们的论点进行操作。 当然,如果你发现你有static void MyStaticUtils.operateOnFoo(Foo foo) ,那么它的好多有非静态void Foo.operate()方法。 但有时你不必添加方法到现有类的奢侈品,必须由现有的方法返回的情况下进行操作,然后静态工具方法肯定是不错的选择。



Answer 4:

使用一个静态变量,有没有其他办法可以做到这一点的主要合法的情况下,是单件模式 。

对于一个单身,使用尤其是一个存取方法延迟初始化 ,需要一个静态方法。

没有什么“坏”关于单身。



文章来源: Static Methods and static variables, bad design practise? [duplicate]
标签: java oop static