我有以下界面:
public enum AggregatorType{
DATA_BASE,
GLOBAL_CACHE,
//etc
}
public interface DataAggregator<T>{
public AggregatorType getType();
public Collection<T> getData();
}
我的问题是将不同类型放在同一个枚举中。对我来说,它至少闻起来不是一件好事(因为两个单独的类型放在同一个地方)。但我看不出它会带来什么样的潜在问题。你能帮我理解吗?
答案 0 :(得分:3)
通常使用enum
类型不是明确定义类类型的好习惯,因为在您希望的代码的某些其他部分中必须有一个控制结构(if-else / switch-case)用于分隔聚合方式的类型。
如果我是你,我会在这个界面中加上aggregate
方法,我会让多态机制为我做出神奇的回应。 DataBaseAggregator
和CacheAggregator
可以用于实现此接口,以在这些数据的聚合中定义不同的行为。