java我应该使用静态初始值设定项还是超级类
我有一个名为Parser
的接口。两个类ParserA, ParserB
实现了Parser
public interface Parser{
public void initialize();
public int Parse(byte[] data);
}
我对初始化感到困惑ParserA
初始化两个Maps
ParserB
初始化两个Maps
。但数据不同Maps
用常量数据初始化。意味着不是从运行时开始
那么我应该使用approach 1还是approach 2呢
方法1:
class Initializer{
//have two maps as member
}
Class ParserA extents initializer implements Parser{
public int Parse(byte[] data){
}
public void initialize(){
//Initialize those maps
}
}
Similarly for class B
方法2:
class Constants{
//Static initializer of four maps[two for ParserA, two for ParserB]
}
Class ParserA implements Parser{
public int Parse(byte[] data){
}
public void initialize(){
//Constants.map1 likewise use.
}
}
Similarly for class B
在上述用例中,哪个是首选的
Q2:我在类^{getAttr
,它利用了这两个映射。在这种情况下,哪种方法更好
Q3如果我想要multiple threads to use these parsers
并且假设我选择了方法1,那么每个线程上都会发生不必要的初始化。这才是真正让我困惑的地方
我有点困惑
假设Animal
是Tiger, Lion
的基类。每只动物都有age, numOfLegs
作为成员。有Animal
类而不是在每个动物类中有age, numOfLegs
类是有意义的。所以Superclass
在这里获胜。不是吗?如果是这样的话,我的场景也与我假设的类似
共 (0) 个答案