因此,我有一堆继承基类的类。每个类都需要有自己的一些值数组,基本上是一个静态数组,因为我不需要为每个实例设置一个。但是由于不能继承静态变量,因此我必须为每个单个类声明此静态数组,并重写对数组进行操作的方法(即使方法始终相同)。我能想到的唯一解决方案是使用非静态数组,但是每个实例都会有一个额外的数组。有什么办法可以解决吗?每个类仅具有1个数组,而不声明同一方法的多个?
我将必须为每个类声明此静态数组
好吧,无论如何,您都必须这样做。由于每个人都需要自己的阵列版本。
由于明显的性能原因,您不需要实例数组,这很有意义。但是如何使用实例方法访问数组呢?像这样:
abstract class Widget
static array MyValues = [1,2,3]
abstract array GetValues
return MyValues
void DoSomething
// reference GetValues instead of MyValues
然后在覆盖类中:
class SpecificWidget inherits Widget
static array MySpecificValues = [2,3,4]
override array GetValues
return MySpecificValues
机制可能会略有不同,具体取决于所使用的语言,但总体思路应该可行。每种类型都定义了一个可以重写的实例方法,其唯一目的是充当一种访问值的工厂。
像这样抽象后,这些值基本上可以存在于任何地方。在静态数组中,在某个地方的外部缓存中,在数据库中等等。其余的代码将耦合到抽象上,而不耦合到值的存储上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句