Gee*_*eek 8 java enums design-patterns
我有一个要求支持一些ChartTypes.这些图表类型中的每一种都可以支持多种ChartSubTypes.例如AreaChart类型可以有PercentArea,StackedArea等我想用一个枚举两者的ChartTypes和SubTypes,然后维持一个地图的地方,这将是这样的:
Map<ChartType,List<ChartSubTypes> mapTypes;
Run Code Online (Sandbox Code Playgroud)
我可以在这里以某种方式使用嵌套的枚举模式吗?如果是,那怎么样?
如果该定义是常量(即您知道哪些子类型可以包含每种类型)您可以在此使用枚举定义,如下所示
enum ChartSubTypes{
PercentArea, StackedArea, ChartSubType3;
}
enum ChartTypes{
AreaChart(ChartSubTypes.PercentArea, ChartSubTypes.StackedArea),
CharType2(ChartSubTypes.PercentArea, ChartSubTypes.ChartSubType3);
private List<ChartSubTypes> subTypes = new ArrayList<ChartSubTypes>();
private ChartTypes(ChartSubTypes ...chartSubTypes){
for(ChartSubTypes subType : chartSubTypes){
subTypes.add(subType);
}
}
public List<ChartSubTypes> getSubTypes(){
return Collections.unmodifiableList(subTypes);
}
}
Run Code Online (Sandbox Code Playgroud)