Java 让全班同学意识到这一点是否被认为是好的';s型?
我有以下界面:Java 让全班同学意识到这一点是否被认为是好的';s型?,java,oop,Java,Oop,我有以下界面: public enum AggregatorType{ DATA_BASE, GLOBAL_CACHE, //etc } public interface DataAggregator<T>{ public AggregatorType getType(); public Collection<T> getData(); } public enum AggregatorType{ 数据库, 全局缓存,
public enum AggregatorType{
DATA_BASE,
GLOBAL_CACHE,
//etc
}
public interface DataAggregator<T>{
public AggregatorType getType();
public Collection<T> getData();
}
public enum AggregatorType{
数据库,
全局缓存,
//等
}
公共接口数据聚合器{
公共聚合类型getType();
公共收集getData();
}
我的问题是在同一个枚举中放置不同的类型。对我来说,它闻起来至少不是一件好事(因为两种不同的类型放在同一个地方)。但我看不出这会导致什么潜在问题。您能帮我理解吗?通常使用
enum
类型来显式定义类的类型不是一个好的做法,因为在代码的其他部分,您需要在该类型上有一个控制结构(如果有/切换大小写),以分离聚合方式
如果我是你,我会在这个界面中放置一个
aggregate
方法,我会让多态性机制为我发挥魔力DataBaseAggregator
和CacheAggregator
可用于此接口的实现,以定义这些数据聚合中的不同行为 这比instanceof有什么好处?@TobiaTesan不,instanceof不是一个解决方案,因为我不知道聚合器的实际类型。我有点困惑。你能描述一下你的用例吗,也许可以举个例子?我强烈怀疑你不需要它。也可能有帮助:)OOP中对象的枚举类型通常很难闻;大多数情况下,这最好通过继承或公共接口来解决。@TobiaTesan这仅用于将不同的聚合器拆分为不同的组。聚合器返回数据,然后我将找到它们的交集。