众所周知,静态不附加到对象(实例),而是存储在对象类型(!)中,因此,此静态(以字段/方法等形式)将存在于单个实例中对于该类型的所有已创建对象。
换句话说,所有创建的 !static 类对象都将引用这些静态方法/字段的单个版本。
在这种背景下,问题出现了,使用 statics的最佳方式是什么,因为带有修饰符static 的对象不受垃圾收集的影响,因为。存储在对象类型中(它又与应用程序域相关联,并且将存在直到应用程序生命周期结束)。
您是否应该避免使用处理大量数据的静态集合/数组(或者值得,但您需要手动“清理”它们)?
使用静态有什么不好的形式?
或者是否可以使用与实例变体相同数量的静态变量?
我认为您不应以存储的“物理”特征为指导,而应以语义(数据的含义)为指导。
如果你有任何适用于类的所有实例的方法或数据,那么这个方法/数据应该被声明为静态的。例如,如果您在系统中有一个单数实例,那么您应该将其声明为单例。
这应该是您如何声明数据的主要考虑因素。如果程序中的数据在其意义上是静态的,则将其声明为静态的。如果它们本质上是一个实例,则将它们声明为实例数据。
示例:Henry Ford concern 制造的汽车颜色为黑色。所以这是静态数据:
我公司目前只有一台机器。但它仍然是一个特定的实例。所以这是一个单例: