我有一系列类(class),A
, B
, C
...(总共几十个)共享通用代码。每个类可以有多个实例A
, B
, C
....我计划创建一个父类(super class),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
...每个都包含一个静态初始化 block ,将相关值放入映射中。但是,我不相信这是最好的办法。
请注意,我没有使用任何 DI 框架。
那么,就子类中包含的代码而言,重构 A
中的静态字段的最简洁方法是什么? , B
, C
...由通用代码处理,而不牺牲字段访问效率?
最佳答案
也许枚举就是您想要的。
enum MyInstances implements MyInterface {
A {
fields and methods for A
}, B {
fields and methods for B
};
common fields for all MyInstances
common methods for all MyInstances
}
// To lookup an instance
MyInstances mi = MyInstances.valueOf("A");
关于java - 为每个类对象共享通用处理代码的最简洁、最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11864013/