每个只使用过一次的类都应该是静态的吗

本文关键字:静态 一次 | 更新日期: 2023-09-27 18:28:31

我看到过关于这一点的各种讨论,我想这可能有点基于观点,但我想知道的是,如果我知道我只会使用一次类(一个实例),我是否应该为了方便而将其设置为静态?这是不好的做法还是会造成问题?

例如。如果我制作一个单人游戏,那么在任何时候都只有一个玩家。那么我是制作public static class Player{}还是坚持使用public class Player{} Player player = new Player();

其想法是,这将通过不需要传递引用来节省时间。

每个只使用过一次的类都应该是静态的吗

请注意,只使用一次类和只使用一个类实例是有区别的(下面会详细介绍)。

静态类通常是这样的类,其目的是公开一组功能和/或常数,它们彼此独立,不需要维护状态信息。如果这就是您的类所做的,那么您可以将其声明为静态。

在你的例子中,我不认为这是应该走的路。Player对象可能具有不同的状态和其他属性,如位置、健康状况等。当你试图在游戏中有两个玩家时,你的设计就会中断。

只使用类的一个实例通常是通过Singleton设计模式实现的。该模式的目的是为您提供给定对象的相同实例,而不管您实际使用该对象的次数如何。

这是一种糟糕的做法。你不知道你的游戏会如何扩展,所以过一段时间你会决定在类后面进行抽象,这会把代码重构变成地狱。例如,如果您决定您的Player是从类Human或某个抽象类VisibleObject继承的,您将陷入困境。

那么,什么时候使用静态?主要是方法、扩展类、一些非常简单的字段,仅此而已。

静态类与其他类基本相同,但不同之处在于不能实例化。在上面的例子中,是否使用静态类并不重要。