我有一系列共享公共代码的类,,,A
... B
(C
总共几十个)。每个类可以有很多实例A
,,, B
...。C
我打算创建一个超类,Abstract
它将包含该代码。
问题是,常见的东西适用于每个类(而不是每个实例)唯一的对象。这目前通过A
, B
, C
... 每个都有一个具有相应值的静态字段来解决。显然,当我将功能重构为 时Abstract
,需要将其更改为其他内容。
在实践中,它目前看起来像这样(注意实际类型不是String
,这只是为了演示目的):
public class A implements CommonInterface {
private static final String specificVar = "A";
@Override
public void common() {
specificVar.contains('');
}
}
public class B implements CommonInterface {
private static final String specificVar = "B";
@Override
public void common() {
specificVar.contains('');
}
}
到目前为止,我想出的最好的想法是在, , , ... 中有一个Map<Class<? extends Abstract>,K>
(K
相关类型在哪里)静态字段,每个字段都包含一个静态初始化块,用于将相关值放入映射中。但是,我不相信这是可以做到的最好的。Abstract
A
B
C
请注意,我没有使用任何 DI 框架。
那么,就子类中包含的代码而言,在不牺牲字段访问效率的情况下,重构由公共代码处理的、...中的静态字段的最简洁的方法是什么?A
B
C